参照链接 : http://blog.csdn.net/liqiangeastsun/article/details/50407671
代码:
using UnityEngine;
using System.Collections;
public class Combine : MonoBehaviour
{
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
CombineMesh();
}
}
private void CombineMesh()
{
MeshRenderer[] meshRenderers = GetComponentsInChildren<MeshRenderer>();
Material[] materials = new Material[meshRenderers.Length];
for (int i = 0; i < meshRenderers.Length; i++)
{
materials[i] = meshRenderers[i].sharedMaterial;
}
MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>();
CombineInstance[] combines = new CombineInstance[meshRenderers.Length];
for (int i = 0; i < meshFilters.Length; i++)
{
combines[i].mesh = meshFilters[i].sharedMesh;
combines[i].transform = meshFilters[i].transform.localToWorldMatrix;
meshFilters[i].gameObject.SetActive(false);
}
MeshFilter meshFilter = transform.GetComponent<MeshFilter>();
if (meshFilter == null)
{
meshFilter = gameObject.AddComponent<MeshFilter>();
}
meshFilter.mesh = new Mesh();
transform.GetComponent<MeshFilter>().mesh.CombineMeshes(combines, false);
transform.gameObject.SetActive(true);
//transform.GetComponent<MeshRenderer>().sharedMaterials = materials;
MeshRenderer meshRenderer = transform.GetComponent<MeshRenderer>();
if (meshRenderer == null)
{
meshRenderer = gameObject.AddComponent<MeshRenderer>();
}
meshRenderer.sharedMaterials = materials;
}
}
按下A之后,GameObject的子物体会变成灰色,说明两个cube已经合在一起了: