// private List<Vector3> InnerPosList = new List<Vector3> // { // new Vector3(1, 1, 0), // new Vector3(1, 2, 0), // new Vector3(1.2f, 2, 0), // new Vector3(1.2f, 1.5f, 0), // new Vector3(1.8f, 1.5f, 0), // new Vector3(1.8f, 2, 0), // new Vector3(2, 2, 0), // new Vector3(2, 1, 0), // }; public GameObject CreateMeshTest() { GameObject go = new GameObject("Mine"); MeshFilter filter = go.AddComponent <MeshFilter>(); Mesh mesh = new Mesh(); filter.sharedMesh = mesh; var vers = new List <Vector3>(); vers.AddRange(SquarePosList); vers.AddRange(InnerPosList); mesh.vertices = vers.ToArray(); // int i = 0; // foreach (var item in vers) // { // Debug.Log("idx:" + i + ";pos:" + item.ToString()); // i++; // } var trains = Triangulation.GetHoleTriangleIdx(SquarePosList, InnerPosList); // trains.Add(6); // trains.Add(5); // trains.Add(0); mesh.triangles = trains.ToArray(); mesh.RecalculateNormals(); mesh.RecalculateBounds(); Material material = new Material(Shader.Find("Diffuse")); material.SetColor("_Color", Color.red); MeshRenderer renderer = go.AddComponent <MeshRenderer>(); renderer.sharedMaterial = material; return(go); }