網格合併,減少DrawCall

文章出處:http://jxwgame.blog.51cto.com

參考代碼:

using UnityEngine;
using System.Collections;

public class Combine : MonoBehaviour
{
	void Start()
	{
		//MeshFilter 網格過濾器,使用這個作爲一個程序的網格接口
		MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>();
		//CombineInstance 合併實例,用來描繪網格合併的結構
		CombineInstance[] combine = new CombineInstance[meshFilters.Length];
		
		for (int i = 0; i < meshFilters.Length; i++)
		{   
			//.mesh 合併網格方法
			combine[i].mesh = meshFilters[i].sharedMesh;//返回網格過濾器的共享的網格。
			//.transform 合併之前,網格變換的矩陣。
			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;
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章