UI优化

避免网格重建

1.动静分离,使用Canvas分组,
UGUI 降低填充率技巧两则
2.避免频繁时UI元素SetActive(开,关)会造成网格重建,可以用CanvasGroup代替改变CanvasGroup的Alpha
3.修改图元素的颜色和Alpha会导致重构网格(修改的是顶点颜色),因此要新家Shader修改颜色和Alpha,不过会导致drawcall加1,和透明渲染排序问题
4.降低界面更新开销

降低界面更新开销

尽量合批,减少Drawcall

1.Unity会对UGUI进行绘制顺序优化,尽可能降低Drawcall,不同图集的组件要避免UI重叠,会打断合批,要避免产生Overdraw(不要使用alpha=0的透明image)

using UnityEngine;
using System.Collections;
 
namespace UnityEngine.UI
{
    public class Empty4Raycast : MaskableGraphic
    {
        protected Empty4Raycast()
        {
            useLegacyMeshGeneration = false;
        }
 
        protected override void OnPopulateMesh(VertexHelper toFill)
        {
            toFill.Clear();
        }
    }
}

2.使用RectMask组件代替Mask组件
3.z值!=0(unity5.x)的UI元素只能和它相连的元素,并且是相同的图集才能合并
4.RawImage 单独占用一个drawcall 同一图集不同贴图无法合并drawcall
6.Text同一字体(实质也是贴图,尽可能将文字生成到一个纹理种),也会合批,较少“动态”长文本
7.DrawCall合并规则


DrawCall合并规则

减少额外计算

1.避免使用RaycastTarget等
2.不要使用OutLine等效果组件
3.少用LayoutGroup和ContentSizeFitter
4.ScrollView优化,使用可循环的ScrollView
5.UI预加载
6.字体拆分
7.将Image的ImageType设置为Sliced,取消勾选FillCenter

OnGUI

OnGUI的每个Label都是一个drawcall

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容