MeshFilter
CombineInstance[] 来得到MeshFilter []中的Mesh
用CombineMeshes得到CombineInstance[]中的Mesh
MeshFilter
CombineInstance[] 来得到MeshFilter []中的Mesh
用CombineMeshes得到CombineInstance[]中的Mesh
//创建一个空物体,最好Reset一下放在世界(0,0,0),空物体要带有MeshFilter组件(用于确定形状)和MeshRenderer组件(用于渲染)
//下面是合并Mesh的代码
//1.获取空物体下所有子物体的MeshFilter组件(这个组件用于控制物品的形状)Mesh是网格
MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>();
//2.创建合并实例体数组
CombineInstance[] combineInstances=new CombineInstance[meshFilters.Length];
//将合并实例体的网格和位置设置成子物体MeshFilter一样的
for (int i=0;i<meshFilters.Length;i++)
{
combineInstances[i].mesh = meshFilters[i].sharedMesh;//这个sharedMesh是场景实例的Mesh,还有一个是Mesh是克隆Mesh
combineInstances[i].transform = meshFilters[i].transform.localToWorldMatrix;//将子物体坐标转化为世界坐标系坐标
}
//创建一个网格
Mesh myMesh = new Mesh();
//将合并实例体们合并起来形成一个整体Mesh
myMesh.CombineMeshes(combineInstances);
//赋值给空物体,让空物体显示出整体
GetComponent<MeshFilter>().sharedMesh = myMesh;
//还要记得将MeshRenderer组件中的Material赋值好,不然显示的是粉红色
//对比性能:优化了40%