combine | Descriptions of the meshes to combine. |
mergeSubMeshes | Should all meshes be combined into a single submesh? |
useMatrices | Should the transforms supplied in the CombineInstance array be used or ignored? |
Combines several meshes into this mesh.
Combining meshes is useful for performance optimization.
If mergeSubMeshes
is true, all the meshes will be combined to a single submesh. Otherwise each mesh will
go into a different submesh. If all meshes share the same material, set this to true.
If useMatrices
is false, the transform matrices in CombineInstance structs will be ignored.
@script RequireComponent(MeshFilter) @script RequireComponent(MeshRenderer) function Start () { var meshFilters: MeshFilter[] = GetComponentsInChildren(MeshFilter); var combine : CombineInstance[] = new CombineInstance[meshFilters.Length]; for (var i = 0; i < meshFilters.Length; i++){ combine[i].mesh = meshFilters[i].sharedMesh; combine[i].transform = meshFilters[i].transform.localToWorldMatrix; meshFilters[i].gameObject.active = false; } transform.GetComponent.<MeshFilter>().mesh = new Mesh(); transform.GetComponent.<MeshFilter>().mesh.CombineMeshes(combine); transform.gameObject.active = true; }
using UnityEngine; using System.Collections;
[RequireComponent(typeof(MeshFilter))] [RequireComponent(typeof(MeshRenderer))] public class ExampleClass : 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++; } transform.GetComponent<MeshFilter>().mesh = new Mesh(); transform.GetComponent<MeshFilter>().mesh.CombineMeshes(combine); transform.gameObject.active = true; } }