上篇文章已经讲解了一些Mesh基础,这次我将结合代码去更深层次的了解Mesh,我想利用Mesh创建Cube。
解题思路:
1.生成Mesh在unity中需要哪些组件
答:MeshFilter、MeshRenderer
2.Cube是由几个顶点组成的?
答:8个顶点
3.Cube是由多少个三角面组成的?
答:一个面包含2个三角面,6个面就是12个三角面
代码部分:
[RequireComponent(requiredComponent: typeof(MeshFilter), requiredComponent2: typeof(MeshRenderer))]
public class CaneratMesh : MonoBehaviour
{
// 设置mesh属性
void Start()
{
Mesh mesh = new Mesh();
MeshFilter filter = GetComponent<MeshFilter>();
filter.mesh = mesh;
mesh.name = "mesh_01";
mesh.vertices = GetVectors();
mesh.triangles = GetTriangles();
}
/// <summary>
/// 顶点信息
/// </summary>
/// <returns></returns>
private Vector3[] GetVectors()
{
return new Vector3[]
{
new Vector3(0,0,0),
new Vector3(0,1,0),
new Vector3(1,1,0),
new Vector3(1,0,0),
new Vector3(1,0,1),
new Vector3(1,1,1),
new Vector3(0,1,1),
new Vector3(0,0,1)
};
}
/// <summary>
/// 三角序列 三个点组成的三角面序列
/// </summary>
/// <returns></returns>
private int[] GetTriangles()
{
return new int[]
{
0,1,2,
0,2,3,
3,2,5,
3,5,4,
4,5,6,
4,6,7,
7,6,1,
7,1,0,
2,1,6,
2,6,5,
7,0,3,
7,3,4,
};
}
}
}
注意你的顶点坐标排序和你三角面顺序要一致,这关系到cube生成渲染显示的正反面,如果有不清楚可以看我上一篇博客。