简介
Canvas 更新系统采用了脏标记模式, 该模式能够捕捉变化的UI元素,并进行最小程度的更新。
Canvas 类会在每次渲染之前 执行 CanvasUpdateRegistry 类中的 PerformUpdate() 方法
该方法会分别取出 布局重建队列 和 图像重建队列里面的元素,执行其中的 Rebuild方法对其进行更新。
重建队列是由 具体的UI元素加上去的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
public virtual void SetVerticesDirty() { if (!IsActive()) return; m_VertsDirty = true; CanvasUpdateRegistry.RegisterCanvasElementForGraphicRebuild(this); if (m_OnDirtyVertsCallback != null) m_OnDirtyVertsCallback(); }
public virtual void Rebuild(CanvasUpdate update) { if (canvasRenderer == null || canvasRenderer.cull) return; switch (update) { case CanvasUpdate.PreRender: if (m_VertsDirty) { UpdateGeometry(); m_VertsDirty = false; } if (m_MaterialDirty) { UpdateMaterial(); m_MaterialDirty = false; } break; } }
|