using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestMesh : MonoBehaviour
{
// Start is called before the first frame update
private MeshFilter mf;
private void Start()
{
//动态添加Mesh Filter 组件
mf = this.AddComponent<MeshFilter>();
//创建一个泛型数组,储存顶点位置
List<Vector3> vects = new List<Vector3>();
//把顶点坐标添加到数组中
vects.Add(new Vector3(0, 0, 0));
vects.Add(new Vector3(1.0f, 0, 0));
vects.Add(new Vector3(1.0f, 0, 1.0f));
vects.Add(new Vector3(0, 0, 1.0f));
vects.Add(new Vector3(0, 1.0f, 0));
vects.Add(new Vector3(1.0f, 1.0f, 0));
vects.Add(new Vector3(1.0f, 1.0f, 1.0f));
vects.Add(new Vector3(0, 1.0f, 1.0f));
//利用Mesh内置函数进行顶点绘制
mf.mesh.SetVertices(vects);
//创建一个泛型数组,存储面片构造序列
List<int> tris = new List<int>();
//按照上图进行顶点序列的定义
//例如由索引为0,1,2三个顶点组成的面片,按照左手法则其构造顺序为0,1,2,因此,往数组中加上顺序为0,1,2的整形数组
tris.AddRange(new List<int> { 0, 1, 2 });
tris.AddRange(new List<int> { 0, 2, 3 });
tris.AddRange(new List<int> { 1, 6, 2 });
tris.AddRange(new List<int> { 1, 5, 6 });
tris.AddRange(new List<int> { 4, 6, 5 });
tris.AddRange(new List<int> { 4, 7, 6 });
tris.AddRange(new List<int> { 0, 7, 4 });
tris.AddRange(new List<int> { 0, 3, 7 });
tris.AddRange(new List<int> { 0, 4, 1 });
tris.AddRange(new List<int> { 1, 4, 5 });
tris.AddRange(new List<int> { 2, 6, 7 });
tris.AddRange(new List<int> { 2, 7, 3 });
//三角形面片的顺序可以颠倒(即面片之间可以没有顺序之分),但一个面片之内的顶点索引绝对要按照左手法则
//利用Mesh内置函数进行面片绘制
mf.mesh.SetTriangles(tris,0);
//给网格增加Mesh Renderer,使其可以被渲染
this. AddComponent<MeshRenderer>();
}
// Update is called once per frame
void Update()
{
}
}