参考链接:https://blog.uwa4d.com/archives/1875.html,详情请点击链接查看UWA的视频解析,尊重UWA版权。本文为个人看视频学习整理笔记,同视频有删减。
降低界面的更新开销
1.动静分离
https://blog.uwa4d.com/archives/video_UI.html
NGUI:细分UIPanel(动态元素和静态元素分离Panel,原理可见前文)
UGUI:细分Canvas
2.降低更新频率
案例:小地图
- 设定移动阈值(如怪物移动很小一点位置后,小地图上看不到变化,那可以设置移动阈值,一旦高于多少之后再设置位置,这可以一定概率上降低小地图更新频率)
- 设定更新频率(手动设置更新频率,小地图玩家不会一直看,所以可以30帧或者1秒钟更新一次,可降低消耗)
3.避免“敏感”操作
NGUI:
元素隐藏显示 -> FillAllDrawCalls
FillAllDrawCalls常见原因:
- 添加/删除元素时,穿插了其他的UIDrawCall
- 添加/删除的元素自成一个UIDrawCall
避免分式:
- 尝试让插入的元素能够合入现有的UIDrawCall
- 通过scale = 0或者alaph接近0来“隐藏”
UGUI:
元素的Position赋值->Canvas.BuildBatch
4.优化选项
NGUI:
- Static(优化移动UIPanel时:UIPanel组件上的Static,当Panel下元素肯定不会变时勾上它,则移动Panel时,不会轮询消耗)
- Visible(优化大量更新网格时)