结合网格有利于性能最优化,如果mergeSubMeshes为true,所有的网格会被结合成一个单个子网格。否则每一个网格都将变成单个不同的子网格。如果所有的网格共享同一种材质,设定它为真。如果useMatrices为false,在CombineInstance结构中的变换矩阵将被忽略。以下是合并当前物体下所有网格的代码:
01
using UnityEngine;
02
03
using System.Collections;
04
05
public class CombineMeshes : MonoBehaviour {
06
07
void Start() {
08
09
MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>();
10
11
CombineInstance[] combine = new CombineInstance[meshFilters.Length];
12
13
int i = 0;
14
15
while (i < meshFilters.Length) {
16
17
combine[i].mesh = meshFilters[i].sharedMesh;
18
19
combine[i].transform = meshFilters[i].transform.localToWorldMatrix;
20
21
meshFilters[i].gameObject.active = false;
22
23
i++;
24
25
} Unity3D教程手册
26
27
transform.GetComponent<MeshFilter>().mesh = new Mesh();
28
29
transform.GetComponent<MeshFilter>().mesh.CombineMeshes(combine);
30
31
transform.gameObject.active = true;
32
33
}
34
35
}
声明: 本文由( zqcyou )原创编译,链接: Unity3D性能优化之合并网格