合并当前物体下所有网格的代码:
using UnityEngine;
using System.Collections;
public class CombineMeshes : MonoBehaviour {
void Start() {
MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>();
CombineInstance[] combine = new CombineInstance[meshFilters.Length];
int i = 0;
while (i < meshFilters.Length) {
combine[i].mesh = meshFilters[i].sharedMesh;
combine[i].transform = meshFilters[i].transform.localToWorldMatrix;
meshFilters[i].gameObject.active = false;
i++;
} <!--DVFMTSC--> Unity3D 教程手册
transform.GetComponent<MeshFilter>().mesh = new Mesh();
transform.GetComponent<MeshFilter>().mesh.CombineMeshes(combine);
transform.gameObject.active = true;
}
}
结合网格有利于性能最优化。如果 mergeSubMeshes 为 true,所有的网格会被结合成一个
单个子网格。否则每一个网格都将变成单个不同的子网格。如果所有的网格共享同一种材
质,设定它为真。如果 useMatrices 为 false,在 CombineInstance 结构中的变换矩阵将被
忽略。
评论0
最新资源