1.UI动静分离
动”指的是元素移动,或者放大/缩小频率比较高的UI。“静”则是静止不动的UI,准确来说,是界面上不会移动、旋转、缩放、更换贴图和颜色的UI。UGUI系统是以Canvas为节点拆分动与静,把会动的UI元素放入专门为它们准备的合并用的画板上,再将静止不动的UI元素留在原来的画板上。这样一来,当会动的UI元素来回移动、旋转、缩放、改变贴图和颜色的时候,就不会再去重构那些静止部分的UI元素了。 动静分离后,CPU在重绘和合并时的消耗就大大降低了。
2.拆分过重的UI
有时一个Prefab里装着2~3个界面 ,它们在展示一个界面时隐藏了其他界面,这样的操作会导致一个UI里的东西过多,在实例化和初始化时,消耗的CPU也会很大,因此我们要想办法拆分这些过重的UI界面。所以我们需要把隐藏的UI拆分出来,使其成为独立运作的界面,只在需要展示时才调用实例化。
3. 打SpriteAtlas图集
每个UI界面打一个私有的SpriteAtlas图集,多个UI公用的图片打一个公有的图集,这样可以合批处理,降低DrawCall,同时打ab包时不会产生资源冗余。
4.遮罩尽量使用RectMask
由于底层实现的不同,使用Mask比RectMask产生的DrawCall多,所以建议尽量使用RectMask 作为遮罩。
5.其它优化
(1)不需要进行事件接受的组件,取消勾选Raycast Target。
(2)不适用富文本的Text,取消勾选Rich Text。
(3)尽量不用Best Fit。