Why it;s never getting to the OnMouseDown function when clicking with the mouse ?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MeshGenerator : MonoBehaviour
{
    public int resX = 2; // 2 minimum
    public int resZ = 2;
    public float length = 1f;
    public float width = 1f;

    private MeshFilter meshf;
    private UnityEngine.Mesh mesh;
    private Vector3[] vertices;

    private int v1;
    private int v2;

    private void Start()
    {
        GenerateMesh(); 
    }

    private void GenerateMesh()
    {
        // You can change that line to provide another MeshFilter
        meshf = GetComponent<MeshFilter>();
        mesh = new UnityEngine.Mesh();
        meshf.mesh = mesh;
        mesh.Clear();

        #region Vertices

        vertices = new Vector3[resX * resZ];
        for (int z = 0; z < resZ; z++)
        {
            // [ -length / 2, length / 2 ]
            float zPos = ((float)z / (resZ - 1) - .5f) * length;
            for (int x = 0; x < resX; x++)
            {
                // [ -width / 2, width / 2 ]
                float xPos = ((float)x / (resX - 1) - .5f) * width;
                vertices[x + z * resX] = new Vector3(xPos, 0f, zPos);
            }
        }
        #endregion

        #region Normales
        Vector3[] normales = new Vector3[vertices.Length];
        for (int n = 0; n < normales.Length; n++)
            normales[n] = Vector3.up;
        #endregion

        #region UVs		
        Vector2[] uvs = new Vector2[vertices.Length];
        for (int v = 0; v < resZ; v++)
        {
            for (int u = 0; u < resX; u++)
            {
                uvs[u + v * resX] = new Vector2((float)u / (resX - 1), (float)v / (resZ - 1));
            }
        }
        #endregion

        #region Triangles
        int nbFaces = (resX - 1) * (resZ - 1);
        int[] triangles = new int[nbFaces * 6];
        int t = 0;
        for (int face = 0; face < nbFaces; face++)
        {
            // Retrieve lower left corner from face ind
            int i = face % (resX - 1) + (face / (resZ - 1) * resX);

            triangles[t++] = i + resX;
            triangles[t++] = i + 1;
            triangles[t++] = i;

            triangles[t++] = i + resX;
            triangles[t++] = i + resX + 1;
            triangles[t++] = i + 1;
        }
        #endregion

        mesh.vertices = vertices;
        mesh.normals = normales;
        mesh.uv = uvs;
        mesh.triangles = triangles;

        mesh.RecalculateBounds();
        //mesh.Optimize();
    }

    private void OnDrawGizmos()
    {
        if (vertices == null)
        {
            return;
        }

        Gizmos.color = Color.black;
        for (int i = 0; i < vertices.Length; i++)
        {
            Gizmos.DrawSphere(transform.TransformPoint(vertices*), 0.1f);*

}
}

void OnMouseDown()
{
if (Input.GetMouseButtonDown(0))
}
I used a break point on the line:
if (Input.GetMouseButtonDown(0))
But it’s never get there.
Might be the camera in the gameview is too far ?
I tried now to move the camera as close as i can to the created mesh but still it’s not getting to the onmousedown function.

You need to add a MeshCollider to the gameObject, or any other Collider.
You can do it via script:

AddComponent<MeshCollider>();

Or manually in the editor. Anyway, you’ll have to assign its SharedMesh property with the mesh you generate.