通过Mesh生成网格
GameObject obj = new GameObject("go");
MeshFilter mf = obj.AddComponent<MeshFilter>();
MeshRenderer mr = obj.AddComponent<MeshRenderer>();
//添加一个材质球
mr.sharedMaterial = Resources.Load<Material>("material");
//第一个网格(矩形)
Vector3[] vectorArray = new Vector3[5];
vectorArray[0].Set(0.0f, 0.0f, 0.0f);
vectorArray[1].Set(0.0f, -1.0f, 0.0f);
vectorArray[2].Set(-3.0f, -1.0f, 0.0f);
vectorArray[3].Set(-3.0f, 0.0f, 0.0f);
vectorArray[4].Set(0.0f, 0.0f, 0.0f);
//顶点配置
List<int> intArray = new List<int>();
for (int i = 0; i < vectorArray.Length - 1; i++)
{
intArray.Add(i);
intArray.Add(i + 1);
}
intArray.Add(vectorArray.Length - 1);
intArray.Add(0);
//第二个网格(三角形)
Vector3[] vectorArray2 = new Vector3[4];
vectorArray2[0].Set(1.0f, 0.0f, 0.0f);
vectorArray2[1].Set(0.0f, 1.0f, 0.0f);
vectorArray2[2].Set(1.0f, 1.0f, 0.0f);
vectorArray2[3].Set(1.0f, 0.0f, 0.0f);
//顶点配置
List<int> intArray2 = new List<int>();
//起点是之前所所有顶点之和
for (int i = vectorArray.Length; i <vectorArray.Length+ vectorArray2.Length - 1; i++)
{
intArray2.Add(i);
intArray2.Add(i + 1);
}
intArray2.Add(vectorArray.Length+ vectorArray2.Length - 1);
intArray2.Add(vectorArray.Length);
//整合所有顶点
List<Vector3> vectorTotal = new List<Vector3>();
vectorTotal.AddRange(vectorArray);
vectorTotal.AddRange(vectorArray2);
//整合所有顶点配置
List<int> indicesTotal = new List<int>();
indicesTotal.AddRange(intArray);
indicesTotal.AddRange(intArray2);
//mesh顶点
mf.mesh.vertices = vectorTotal.ToArray();
//mesh顶点数据信息(配置)
mf.mesh.SetIndices(indicesTotal.ToArray(), MeshTopology.Lines, 0);
生成效果