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);
        } 
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。