// крыша. private void CreateRoof(List <Vector2> points, float height) { // создаём пустой объект. GameObject go = new GameObject("Roof"); go.transform.parent = GameObject.Find("Building").transform; // добавляем MR. go.AddComponent <MeshRenderer>(); // добавляем MF. MeshFilter mf = go.AddComponent <MeshFilter>(); Mesh mesh = new Mesh(); mf.mesh = mesh; // лист вершин. List <Vector2> vertsList = Triangulation.GetResult(points, true); // добавляем вершины. //for (int i = 0; i < points.Count; i++) //{ // vertsList.Add(new Vector3(points[i].x, height - 0.11f, points[i].y)); //} // лист треугольников. List <int> tris = new List <int>(); // кол-во треугольников. int trisCount = vertsList.Count - 2; // сдвиг. int shift = 0; // расчитываем треугольники. for (int i = 0; i < trisCount; i++) { for (int j = shift; j < shift + 3; j++) { tris.Add(j); } shift++; } // UV. List <Vector2> uvs = new List <Vector2>(); for (int i = 0; i < vertsList.Count; i++) { uvs.Add(new Vector2(vertsList[i].x, vertsList[i].y)); } // переводим всё в массивы. Vector3[] verts = new Vector3[vertsList.Count]; for (int i = 0; i < vertsList.Count; i++) { verts[i] = new Vector3(vertsList[i].x, height - 0.11f, vertsList[i].y); } int[] triangles = ListToArray <int>(tris); Vector2[] uv = ListToArray <Vector2>(uvs); // применяем настройки. mesh.vertices = verts; mesh.triangles = triangles; mesh.uv = uv; // натягиваем текстуру. Renderer rend = go.GetComponent <Renderer>(); rend.material.mainTexture = roofTexture; rend.material.mainTexture.wrapMode = TextureWrapMode.Repeat; rend.material.mainTextureScale = new Vector2(1, 1); }