Mesh.CombineMeshesfunction CombineMeshes (combine : CombineInstance[], mergeSubMeshes : boolean = true, useMatrices : boolean = true) : voidDescriptionCombines 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.
JavaScripts
@script RequireComponent(MeshFilter)
@script RequireComponent(MeshRenderer) function Start () { var meshFilters = GetComponentsInChildren(MeshFilter); var combine : CombineInstance[] = new CombineInstance[meshFilters.length]; for ( 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 example : MonoBehaviour { void Start() { Component[] meshFilters = GetComponentsInChildren<MeshFilter>(); CombineInstance[] combine = new CombineInstance[meshFilters.length]; 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; } } import UnityEngine
import System.Collections [RequireComponent(MeshFilter)] [RequireComponent(MeshRenderer)] class example(MonoBehaviour): def Start(): meshFilters as (Component) = GetComponentsInChildren[of MeshFilter]() combine as (CombineInstance) = array[of CombineInstance](meshFilters.length) 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[of MeshFilter]().mesh = Mesh() transform.GetComponent[of MeshFilter]().mesh.CombineMeshes(combine) transform.gameObject.active = true |
