优化方向
- DrawCall
- 网格重建
- OverDraw
- 事件检查
DrawCall
- 打包图集,注意同一个图集中的图片格式不一样可能会被拆成不同的子图集。
- 防止不同图集穿插和同个图集重叠,否则会限制DrawCall Batching。
- 隐藏UI控件可以使用Scale = 0或Alpha Group = 0,不要用alpha = 0,透明效果依然有渲染开销。
- UI的Position.z 不等于0会限制DrawCall Batching。
- Alpha = 0或Null Sprite依然会进行渲染。
- 少用Mask,增大模板测试开销。
网格重建
Canvas.BuildBatch
- 动静分离,拆分Canvas。将频繁变动的UI界面与较少变化的UI界面拆分在不同的Canvas上。
- 设置移动阈值和更新频率,防止界面频繁更新。比如Position的变化幅度大于设定的阈值时UI才更新。
- 避免敏感操作,比如Position赋值时检测新值是否等于旧值,是的话就无需赋值。
OverDraw
- 尽量减少界面重叠。
- 图片可以设置成Sliced,而且FillCenter不要勾选。
- Alpha = 0依然会出现OverDraw。
事件检查
- Raycast Target尽量不要勾选,因为事件响应机制会遍历UI控件的事件情况,不勾选可以提高遍历的效率。
参考链接:
https://blog.csdn.net/qq_21397217/category_6902472.html
https://blog.csdn.net/qq_21397217/article/details/82458304
https://blog.csdn.net/qq_21397217/article/details/82347840
https://blog.csdn.net/greedylin/article/details/80767628
https://blog.csdn.net/qq_33337811/article/details/75208787
视频: