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

posted on 2016-02-23 16:06  陈二狗  阅读(295)  评论(0编辑  收藏  举报

导航