Why do I get this weird mesh error when I have a mesh over 250 by 250?

[169638-error-en-la-mesh.jpg*_|169638]I am trying to generate a mesh that is over 250 by 250, but for some reason it breaks and it does not work, it gets weird artifacts on the mesh. If try doing it the mesh for some reason stays rectangular though it should be a square because I only use square sizes so I am sure the error has to do with the rest of the mesh.

using System.Collections;
    using System.Collections.Generic;
    using System.Security.Cryptography;
    using UnityEngine;
    using UnityEngine.AI;
    using UnityEngine.UIElements;
    
public class MeshGenerator : MonoBehaviour
{   //Resolucion del terreno
    public int xSize;
    public int zSize;
    float minTerrainHeight;
    float maxTerrainHeight;
    public int offsetX;
    public int offsetZ;
    //Modificador de aleatoriedad
    public float RandomModifier;
    //Color del terreno generado
    Color[] TerrainColor;
    //Mesh
    Mesh mesh;
    //Vertices y cordenadas de vertices
    Vector3[] vertices;
    int[] triangles;
    //Color del terreno
    public Gradient TerrainHeightColor;

    void Start()
    {
        mesh = new Mesh();
        GetComponent<MeshFilter>().mesh = mesh;
        CreateShape();
        UpdateMesh();
        Debug.Log("RandomModifier = " + RandomModifier);

    }
    void Update()
    {
    }
    void CreateShape()
    {
        vertices = new Vector3[(xSize + 1) * (zSize + 1)];
        //Generador de las cordenadas de cada vertice del triangulo
        for(int i = 0,z = 0; z <= zSize; z++)
        {
            for(int x = 0; x <= xSize; x++)
            {

                int y = Mathf.RoundToInt(Mathf.PerlinNoise((x+ offsetX) * 0.009f + RandomModifier,(z+offsetZ)*0.009f + RandomModifier)*40f);
                vertices *= new Vector3(x,y,z);*

i++;

if (y > maxTerrainHeight)
maxTerrainHeight = y;
if (y < minTerrainHeight)
minTerrainHeight = y;
//Debug.Log("y = " + y);

}
}

triangles = new int[xSize * zSize * 6];
int vert = 0;
int tris = 0;

//Generador de vertices de los triangulos
for(int z = 0;z < zSize; z++)
{
for(int x = 0;x < xSize; x++)
{
triangles[tris + 0] = vert;
triangles[tris + 1] = vert + xSize +1;
triangles[tris + 2] = vert + 1;
triangles[tris + 3] = vert + 1;
triangles[tris + 4] = vert +xSize+ 1;
triangles[tris + 5] = vert + xSize + 2;

vert++;
tris += 6;
}
vert++;
}
TerrainColor = new Color[vertices.Length];

for(int i= 0,z = 0;z <= zSize;z++)
{
for(int x = 0; x <= xSize; x++)
{
float height = Mathf.InverseLerp(minTerrainHeight,maxTerrainHeight, vertices*.y);*
TerrainColor = TerrainHeightColor.Evaluate(height);
i++;
}
}
Debug.Log(“MAX:” + maxTerrainHeight);
Debug.Log(“MIN:” + minTerrainHeight);
}
void UpdateMesh()
{
mesh.Clear();
mesh.vertices = vertices;
mesh.triangles = triangles;
mesh.RecalculateNormals();

for (int i = 0, z = 0; z <= zSize; z++)
{
for (int x = 0; x <= xSize; x++)
{
float height = Mathf.InverseLerp(-1, 40, vertices*.y);*
TerrainColor = TerrainHeightColor.Evaluate(height);
i++;
}
}
mesh.colors = TerrainColor;
}
private void OnDrawGizmos()
{ if (vertices == null) return;
for(int i = 0; i < vertices.Length; i++)
{
Gizmos.DrawSphere(vertices*, .1f);*
}
}
}
_*

Hi Laucha,

The problem here is you have reached Unity’s vertex limit of 65535.

250x250 (62500 vertices) is the largest square Unity can make without passing its limits.

You’ll need to split your mesh into multiple objects.