Mesh Fiter:网格过滤器
Mesh Renderer:网格渲染器
渲染一个矩形平面
如果要渲染图中所示矩形,首先要找到四个顶点,然后以任意一个顶点为起点顺时针方向绘制,也可以用两个三角形组成一个矩形。这样渲染出来的就是正面的矩形,从背面是看不见的,如果要渲染背面的逆时针就可以了
代码如下:
Mesh mesh = new Mesh();
List<Vector3> v3 = new List<Vector3>();
v3.Add(new Vector3(0, 0, 0));
v3.Add(new Vector3(0, 1, 0));
v3.Add(new Vector3(1, 0, 0));
v3.Add(new Vector3(1, 1, 0));
mesh.vertices = v3.ToArray();
List<int> it = new List<int>();
it.Add(0);
it.Add(1);
it.Add(2);
it.Add(2);
it.Add(1);
it.Add(3);
mesh.triangles = it.ToArray();
GetComponent<MeshFilter>().mesh = mesh;
GetComponent<MeshCollider>().sharedMesh = mesh;
GetComponent<MeshRenderer>().material.color = Color.white;
如果要渲染一个Cube,只需要找出8个顶点以后渲染出六个面即可
Mesh mesh = new Mesh();
List<Vector3> v3 = new List<Vector3>();
v3.Add(new Vector3(0, 0, 0));
v3.Add(new Vector3(0, 1, 0));
v3.Add(new Vector3(1, 0, 0));
v3.Add(new Vector3(1, 1, 0));
v3.Add(new Vector3(0, 0, 1));
v3.Add(new Vector3(0, 1, 1));
v3.Add(new Vector3(1, 0, 1));
v3.Add(new Vector3(1, 1, 1));
mesh.vertices = v3.ToArray();
List<int> it = new List<int>();
it.Add(0);
it.Add(1);
it.Add(2);
it.Add(2);
it.Add(1);
it.Add(3);
it.Add(6);
it.Add(3);
it.Add(7);
it.Add(6);
it.Add(2);
it.Add(3);
it.Add(7);
it.Add(5);
it.Add(4);
it.Add(7);
it.Add(4);
it.Add(6);
it.Add(4);
it.Add(6);
it.Add(0);
it.Add(4);
it.Add(5);
it.Add(0);
it.Add(0);
it.Add(5);
it.Add(1);
it.Add(0);
it.Add(6);
it.Add(2);
it.Add(1);
it.Add(5);
it.Add(3);
it.Add(3);
it.Add(5);
it.Add(7);
mesh.triangles = it.ToArray();
GetComponent<MeshFilter>().mesh = mesh;
GetComponent<MeshCollider>().sharedMesh = mesh;
GetComponent<MeshRenderer>().material.color = Color.white;
mesh.RecalculateNormals();
想要渲染出来的Cube可以碰撞的话得添加碰撞框和刚体组件