Я пытался добавить метод InitMesh в свой код, но он особо не изменился. треугольник все еще находится в том же статическом положении.
полный код:
using UnityEngine;
[ExecuteAlways]
[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
public class GridGenerate : MonoBehaviour
{
[Min(1)] public int xSize = 1, ySize = 1;
private Mesh mesh;
private Vector3[] vertices;
private void Awake()
{
InitMesh();
GenerateGrid();
}
private void OnValidate()
{
InitMesh();
GenerateGrid();
}
private void Update()
{
if (mesh == null || mesh.vertexCount != (xSize + 1) * (ySize + 1))
{
InitMesh();
GenerateGrid();
}
}
private void InitMesh()
{
if (mesh == null)
{
mesh = new Mesh();
GetComponent().mesh = mesh;
}
else
{
mesh.Clear();
}
}
private void GenerateGrid()
{
mesh.name = "Procedural Grid with Triangle";
mesh.vertices = CreateVertices(); // Set vertices first
mesh.triangles = CreateTriangles(); // Assign triangles after vertices
mesh.RecalculateNormals(); // Recalculate normals for proper lighting
}
private Vector3[] CreateVertices()
{
vertices = new Vector3[(xSize + 1) * (ySize + 1)];
int index = 0;
// Create vertices for the grid
for (int y = 0; y
Подробнее здесь: https://stackoverflow.com/questions/791 ... ertices-an