网格合并,减少DrawCall

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

参考代码:

using UnityEngine;
using System.Collections;

public class Combine : MonoBehaviour
{
	void Start()
	{
		//MeshFilter 网格过滤器,使用这个作为一个程序的网格接口
		MeshFilter[] meshFilters = GetComponentsInChildren();
		//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().mesh = new Mesh();
		//组合多个网格到同一个网格 
		transform.GetComponent().mesh.CombineMeshes(combine);
		transform.gameObject.active = true;
	}
}



你可能感兴趣的:(Unity,网格,draw,call)