Mesh.CombineMeshes

function CombineMeshes (combine : CombineInstance[], mergeSubMeshes : boolean = true, useMatrices : boolean = true) : void

Description

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.

JavaScript
    @script RequireComponent(MeshFilter)
@script RequireComponent(MeshRenderer)
function Start () {
var meshFilters = 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 example : MonoBehaviour {
void Start() {
Component[] 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;
}
}

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 as int = 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