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.尽量减少"动态"长文本。

待补充。。。

相关推荐
Python私教15 小时前
Unity 游戏开发「工业化级」学习路线 2025 版
学习·unity·游戏引擎
于小汐在咯20 小时前
【Unity每日一记】Unity物理引擎:刚体与碰撞体详解
unity·游戏引擎
鱼蛋-Felix1 天前
Unity jar更新不生效怎么解决
unity·游戏引擎·jar
爱吃小胖橘1 天前
Unity资源加载模块全解析
开发语言·unity·c#·游戏引擎
井队Tell2 天前
打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线(第九天)
学习·3d·unity
千年奇葩2 天前
Unity性能优化之:利用CUDA加速Unity实现大规模并行计算。从环境搭建到实战案例
c++·人工智能·unity·游戏引擎·cuda
17岁的勇气2 天前
Unity Shader unity文档学习笔记(二十二):雪地几种实现方式(1. 2D贴花式 2.3D曲面细分并且实现顶点偏移)
笔记·学习·unity·shader
科技快报3 天前
引入实时 3D 渲染技术,地平线与 Unity 开启车载交互空间化时代
3d·unity·交互
爱吃小胖橘3 天前
高效对象池设计:提升Unity性能的关键
开发语言·unity·c#·游戏引擎
沉默的记录者3 天前
unity 2021反向遮罩的毛边
unity·游戏引擎