在屏幕上渲染物体,引擎需要发出一个绘制调用来访问图形API.每个绘制调用需要进行大量的工作来访问图形API,从而导致了CPU方面显著的性能开销。

Unity在运行时可以将一些物体进行合并,从而用一个绘制调用来渲染他们,这一操作,我们称之为“批处理”。一般来说,Untiy批处理的物体越多,你就会得到越好的渲染性能。

材质

只要拥有相同材质的物体才可以进行批处理。因此,如果你想要得到良好的批处理效果,你需要在程序中尽可能地复用材质和物体。

如果你的两个材质仅仅是纹理不同,那么你可以通过纹理拼合操作来将两张纹理合成一张大的纹理。一旦纹理拼合在一起,你就可以使用这个单一材质来代替之前的两个材质了。

动态批处理

如果动态物体共用者相同的材质,那么Unity会自动对这些物体进行批处理。

动态批处理操作是自动完成的,并不需要你进行额外的操作。

批处理动态物体需要在每个顶点上进行一定的开销,所以动态批处理今支持小于900定点的网络物体。

静态批处理

相对而言,静态批处理操作允许引擎对任意大小的几何物体进行批处理操作来降低绘制调用(只要这些物体不移动,并且拥有相同的材质)。因此,静态批处理比动态批处理更加有效,你应该尽量使用它,因为它需要更少的CPU开销。

为了更好地使用静态批处理,你需要明确指出哪些物体是静止的,并且在游戏中永远不会移动、旋转和缩放。想完成这一步,你只需要在检测器(Inspector)中将static复选框打勾即可。

静态批处理和动态批处理打上勾 如下图

unity批处理的条件_API

unity批处理的条件_性能分析_02

Profiler性能分析器 可以查看draw call