【Unity】UI优化
批处理
批处理的目的是为了减少Draw Call的调用次数
什么是Draw Call?
- CPU先准备好模型的网格、用到的贴图和Shader,然后将网格、贴图、Shader加载到显存里面。
- 然后是CPU设置渲染状态:每个网格用哪个Shader、贴图渲染。
- CPU通知GPU开始渲染(通知的这个命令就叫做Draw Call)。
UGUI实质上也是由网格组成的,所以也会产生Draw Call
总结
合批优化
- 使用图集
- 动静分离(动态部分和静态部分分别使用不同的Canvas)
- Text如果可以用图片代替就用图片代替
- 避免频繁删除/增加UI对象,UI层次结构变化会引起Canvas的更新(rebuild)
- 避免UI元素数目过多和层次结构过于复杂影响Batch更新速度
- 尽量不要使用Mask(其内部使用了模板缓冲,至少会造成增加2个Draw Call)
其他优化
- 尽量不要使用Outline、TiledSprite(两者会产生许多顶点)
- 不需要点击事件的取消勾选Raycast
参考