Unity3D性能优化之合并网格
合并网格有利于性能最优化。如果mergeSubMeshes为true,所有的网格会被结合成一个单个子网格。否则每一个网格都将变成单个不同的子网格。如果所有的网格共享同一种材质,设定它为true。如果useMatrices为false,在CombineInstance结构中的变换矩阵将被忽略。以下是合并当前物体下所有网格的代码:
using UnityEngine;
using System.Collections;
public class CombineMeshes : MonoBehaviour {
void Awake() {
MeshFilter[] meshFilters = transform.GetComponentsInChildren<MeshFilter>();
CombineInstance[] combieArray = new CombineInstance[meshFilters.Length];
int index = 0;
while(index < meshFilters.Length){
combieArray[index].mesh = meshFilters[index].sharedMesh;
combieArray[index].transform = meshFilters[index].transform.localToWorldMatrix;
meshFilters[index].gameObject.SetActive(false);
index++;
}
transform.GetComponentInChildren<MeshFilter>().mesh = new Mesh();
transform.GetComponentInChildren<MeshFilter>().mesh.CombineMeshes(combieArray);
transform.gameObject.SetActive(true);
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。