避免网格重建
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