1.UGUI准备数据的流程


a.PostLateUpdate.PlayerUpdateCanvases
- 作用: 这是Unity在每帧的晚期更新(LateUpdate)之后, 专门用于更新所有Canvas(UI画布)的系统函数; 它负责驱动整个
UI渲染流程
- 详细流程: 它会调用Canvas.SendWillRenderCanvases(), 从而触发一系列UI更新操作, 包括布局计算、网格重建、批处
理生成等
b. UGUI.Rendering.UpdateBatches
- 作用: 更新渲染批处理, 这是Unity UI系统进行批处理的关键步骤, 将多个UI元素合并到一个Draw Call中, 以减少渲染
开销
c.CanvasRenderer.SyncTransform
- 作用: 同步CanvasRenderer的变换信息, 当UI元素的位置、旋转或缩放发生变化时,需要将变换信息从Transform组件同步
到CanvasRenderer, 以便正确渲染
d.Canvas.BuildBatch
- 作用: 构建批处理, 将需要渲染的UI元素按照材质、纹理等条件进行分组, 生成一个或多个批处理(Batch), 每个批处理对
应一个Draw Call
e.Canvas.SendWillRenderCanvases() [invoke]
- 作用: 触发WillRenderCanvases事件, 这个事件会调用所有注册的CanvasUpdateRegistry中的元素, 执行布局和重建
f.Render
- 作用: 这是一个总的渲染阶段, 可能包含了多个子步骤; 在您提供的截图中, 它下面包含了Layout(布局)相关的步骤
g.Layout(布局计算)
- 作用: 计算UI元素的位置和大小, 当UI元素发生变化(如文本改变、尺寸调整)时, 需要重新计算布局
h.CanvasUpdate.Prelayout
- 作用: 布局前的准备工作, 在正式计算布局之前, 可能需要更新一些数据或状态
i.CanvasUpdate.PostLayout
- 作用: 布局后的处理工作; 在布局计算完成后, 可能需要更新一些依赖于布局结果的属性
j.CanvasUpdate.Layout
- 作用: 执行布局计算。这是布局系统的核心, 会根据UI元素的约束(如锚点、布局组)计算每个UI元素的最终位置和大小
k.CanvasRenderer.SyncWorldRect
- 作用: 同步CanvasRenderer的世界空间矩形, 这个矩形用于确定UI元素在屏幕上的裁剪区域
l.TransformChangeSystem
- 作用: 变换更改系统。处理Transform组件的更改,并更新相关的渲染数据
m.CanvasRenderer.SyncClipRect
- 作用: 同步CanvasRenderer的裁剪矩形; 当使用Mask或RectMask2D等裁剪组件时, 需要更新裁剪区域
m.Canvas.SendPreWillRenderCanvases() [invoke]
- 作用:触发PreWillRenderCanvases事件; 这个事件在WillRenderCanvases之前被调用, 用于执行一些前置操作