Unity 在游戏开发行业中扮演着非常重要的角色。很多游戏都是用Unity开发的,所以在Unity运行的时候,需要合并一些对象,用一张图来渲染。这就是Batch processing,今天的文章只是想告诉大家Unity中如何处理批处理的静态和动态问题:
动态批处理
如果动态对象共享相同的材质,Unity 会自动批处理这些对象。
动态批处理是自动完成的,不需要您进行额外的工作。
提示:
1、 批处理动态对象需要每个顶点的开销,因此动态批处理仅支持少于 900 个顶点的网格。
2、 如果你的着色器使用顶点位置、法线和UV值,那么你只能批处理低于300个顶点的对象;如果您的着色器需要使用顶点位置、法线、UV0、UV1 和切线向量,那么您只能批处理低于 180 个顶点的对象。
3、请注意:属性数量的限制将来可能会改变。
4、 不要使用比例。两个具有比例的对象(分别为 1,1,1) 和 (2,2,2)) 不会被批处理。
5、 均匀缩放的对象不会与非均匀缩放的对象进行批处理。
两个具有尺度 (1,1,1) 和 (1,2,1)) 的对象不会被批处理,而是具有尺度 (1,2,1) 和 (1,3, 1) 两个对象将能够被批处理。
6、 不同材质的实例化对象会导致批处理失败。
7、带有光照贴图的对象具有额外的(隐藏的)材质属性,例如光照贴图偏移和缩放因子。因此,带有光照贴图的对象不会被批处理(除非它们指向光照贴图的同一部分)。
8、 多通道着色器会妨碍批处理操作。例如,Unity 中几乎所有的着色器都支持前向渲染中的多个灯光,从而有效地为它们打开了多个通道。
9、预设实例将自动使用相同的网格和材质。
静态批处理
相比之下,静态批处理允许引擎批处理任何大小的几何对象以减少绘制调用(只要对象不移动并且具有相同的材质)。因此,静态批处理比动态批处理效率更高,您应该尽量少使用它,因为它需要的 CPU 开销更少。
为了更好地使用静态批处理,您需要明确指出哪些对象是静态的,并且在游戏中永远不会移动、旋转和缩放。要完成此步骤,您只需在 Inspector 中勾选 Static 复选框。
使用静态批处理操作需要额外的内存开销来存储合并的几何数据。在静态批处理之前,如果某些对象共享相同的几何图形,引擎将为处于编辑和运行状态的每个对象创建几何图形的副本。这并不总是一个好主意,因为有时,您将不得不牺牲一点渲染性能来防止某些对象的静态批处理,从而减少内存开销。例如,将茂密森林中的树设置为静态会导致严重的内存开销。
静态批处理目前仅支持 Unity iOS Advanced。
Unity中如何处理批处理的静态和动态问题?不同的问题必须以不同的方式处理。如果您对Unity有更多的专业知识需要学习,那么您可以来我们千锋教育的Unity培训班实地考察,或咨询我们了解详情。更多关于Unity培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。