静态批处理(Static Batching)
Mesh Renderer能参与静态批处理,而Sprite Renderer不适合,通常用于3D模型的静态批处理不适用于2D Sprite。
ParticleSystemRenderer也不参与静态批处理,粒子系统通常在GPU上计算和渲染,通过启用GPU Instancing在材质上实现,减少渲染调用。
SkinnedMeshRenderer不适合静态批处理,它们用于动画角色等顶点在运行时变换的物体,不符合静态批处理要求。
动态批处理(Dynamic Batching)
Mesh Renderer能参与动态批处理,而Sprite Renderer可以,通常因为图集纹理不同而不合并为一个批处理。
Sprite的顶点数固定,容易被动态批处理,但最多不能超过300个顶点(动态批处理顶点数限制取决于硬件和Unity版本)。
ParticleSystemRenderer不参与动态批处理,粒子系统在GPU上计算和渲染,通过启用GPU Instancing减少渲染调用。
SkinnedMeshRenderer不参与动态批处理。
UGUI合批规则(Canvas Renderer)
合批原则是将渲染时使用相同材质、相同贴图的网格合并为一个大网格,以一次Draw Call直接渲染,优化性能。
Unity依据Canvas下的UI元素进行合批,以Canvas为单位进行。深度值、材质ID、贴图ID和Renderer Order(Hierarchy面板上的顺序)共同决定合批。
首先,计算Canvas内所有UI元素的深度值,按照深度值、材质ID、贴图ID和Renderer Order排序,剔除深度值为-1的元素,形成队列。
然后,根据队列判断相邻元素材质和贴图是否相同进行合批,注意深度值不作为判断条件,即使深度值不同,只要材质和贴图相同也可合批。
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。