Unity性能优化笔记——UI优化

NGUI:

cs 复制代码
public class UIGeometry
{
   public BetterList<Vector3> verts = new BetterList<Vector3>();
   public BetterList<Vector2> uvs = new BetterList<Vector2>();
   public BetterList<Color32> cols = new BetterList<Color32>();
   public BetterList<<Vector3> mRtpVerts = new BetterList<Vector32>();
}

UGUI:

cs 复制代码
public class VertexHelper:IDisaposable
{
   private List<Vector3> m_Positions = ListPool<Vector3>.Get();
   private List<Color32> m_Colors = ListPool<Color32>.Get();
   private List<Vector2> m_Uv0s = ListPool<Vector2>.Get();
   private List<Vector2> m_Uv1s = ListPool<Vector2>.Get();
   private List<Vector3> m_Normals = ListPool<Vector3>.Gte();
   private List<Vector4> m_Tangents = ListPool<Vector4>.Get();
   private List<int> m_Indices = ListPool<int>.Get();
}

元素更新方式:

NGUI:

UIPanel.LateUpdate

1.轮询

2.UIPanel.UpdateWidgets

UGUI:

Canvas.SendWillRenderCanvas

1.队列

2.m_LayoutRebuildQueue

3.m_GraphicRebuildQueue

UGUI如果Canvas没有变化Canvas.SendWillRenderCanvas是完全没有开销的

处理隐藏显示元素方式

NGUI:

1.大量的SetActive(false),

2.适量的Color.a = 0 ,移出

3.Time + 二级缓存

UGUI

1.scale = 0,Alpha Group = 0

修改一个UI元素最终会转变成很多组的顶点属性,同过这些顶点属性转换成mesh。动态的UI元素要控制数组里面的顶点数。

对于制作的影响:

1."动态"元素尽量少用OutLine.Tiled Sprite。

2.尽量减少"动态"长文本。

待补充。。。

相关推荐
Liam_Lsc3 小时前
Unity 实现伤害跳字
unity·游戏引擎
浅陌sss1 天前
设计模式 --- 原型模式
unity·游戏引擎
1 天前
Unity中基于2.5D的碰撞系统
unity·游戏引擎
scott.cgi2 天前
「Unity3D」TextMeshPro中的TMP_InputField,用来实现输入框的几个小问题
unity·ugui·textmeshpro·tmp_inputfield·inputfield·inputfield输入框·ugui输入框
蔗理苦2 天前
2025-04-08 NO.4 Quest3 交互教程
unity·交互·vr·quest
我有医保我先冲2 天前
智能仓储数字孪生Demo(Unity实现)
unity·游戏引擎
EQ-雪梨蛋花汤3 天前
【Unity】Unity Transform缩放控制教程:实现3D模型缩放交互,支持按钮/鼠标/手势操作
3d·unity·交互
晴空了无痕3 天前
群体智能避障革命:RVO算法在Unity中的深度实践与优化
算法·unity·游戏引擎
EQ-雪梨蛋花汤3 天前
【UnityEditor扩展】如何在 Unity 中创建棱柱体(用作VR安全区检测),同时在编辑器插件中实现与撤销/恢复功能
unity·编辑器·vr
BuHuaX3 天前
C#的反射机制
服务器·unity·c#·游戏引擎·游戏程序