先放官方对于Draw call batch的解释:https://docs.unity3d.com/Manual/DrawCallBatching.html
在Unity 的优化中,我们经常说要优化Draw call。但是我们在Unity 的视图里的 stats窗口里,看到的与draw call 有关的参数大部分情况下只有SetPassCall 和 Batches两个。
那这两个值分别代表着什么呢?它们谁更贴近draw call 呢?
先来看Setpass Call , 我们不用官方那么高大上的翻译,我们通俗来说,它大致代表的是摄像机照射范围内,所有GameObject所包含的Material种类数量。(不完全准确,但是这样说易于理解)。假如有30种material,那这个SetpassCall的数值也会离这个30比较接近。这个值越大,肯定会使draw call 越来越大。但是setpasscall很小的时候,也有可能draw call的值比较大。为什么我们要看下面这个属性: Batches.
Batches,是unity中合批次。具体的概念这里就不赘述,网上有很多资料。这个值是和Draw call 比较接近的。有时候在项目中,我们的setpass call 数值不高,但是batches出奇的高,结果也会导致draw call 过高而影响游戏的CPU性能。那这个值为什么会过高呢? 主要是因为需要渲染的一些游戏物体不满足Unity的Dynamic batch的要求。当需要渲染的Gameobject过多,而且这些gameobject又不能被Unity 内置的Batch功能自动合并时,每多一个这样的Gameobject,就会多一个Batch,进而就会导致Draw call过高,造成卡顿。这种情况是要尽量避免的。(这里不讨论Static Batch)。那么怎么判断哪些gameobject 是可以被unity 进行动态batch的呢?有如下几点(这里图快,只贴英文):

最低0.47元/天 解锁文章
7118





