把需要合併的網格統一放置到一個父節點下:
合併網格代碼如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChinarMergeMesh : MonoBehaviour
{
void Start()
{
MergeMesh();
}
/// <summary>
/// 合併網格
/// </summary>
private void MergeMesh()
{
//獲取所有子物體的網格
MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>();
//新建一個合併組,長度與Meshfilters一致
CombineInstance[] combineInstances = new CombineInstance[meshFilters.Length];
for (int i = 0; i < meshFilters.Length; i++)
{
combineInstances[i].mesh = meshFilters[i].sharedMesh;//將共享mesh,賦值
combineInstances[i].transform = meshFilters[i].transform.localToWorldMatrix;//本地座標轉矩陣,賦值
}
Mesh newMesh = new Mesh();
newMesh.CombineMeshes(combineInstances);
gameObject.AddComponent<MeshFilter>().sharedMesh = newMesh;
}
}