Unity中動態網格合併的處理

把需要合併的網格統一放置到一個父節點下:
合併網格代碼如下:

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;
    }
}

發佈了47 篇原創文章 · 獲贊 77 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章