function CombineMeshes (combine : CombineInstance[], mergeSubMeshes : bool = true, useMatrices : bool = 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.
@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() {
System.
Object 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;
}
}