UGUI源码分析:CanvasUpdateSystem 画布刷新

2020-05-31  本文已影响0人  Vin129_

系列

UGUI源码分析系列总览

CanvasUpdateSystem

Related Class: Canvas、CanvasUpdateRegistry、ClipperRegistry

Related Interface: ICanvasElement

Related Other: Enum CanvasUpdate

Intro: 由Canvas控制,通过 ICanvasElement 接口,使用脏标记方法来统一更新CanvasElement

在这里插入图片描述

ICanvasElement

PerformUpdate

Registry 管理着两个队列

  1. LayoutRebuildQueue:布局重建
  2. GraphicRebuildQueue:图像重建

CanvasUpdateRegistry 被初始化时(构造函数)向Canvas中注册了更新函数(PerformUpdate),以用来响应重建。

Canvas.willRenderCanvases += PerformUpdate;

Canvas在渲染前会调用willRenderCanvases,即执行PerformUpdate ,流程如下:

脏标记

标记延迟执行,优化重新渲染的手段。
详情请见:游戏设计模式:脏标识模式

例如在Graphic 中存在三种脏标分别代表三种等待重建

  1. 尺寸改变时(RectTransformDimensions):LayoutRebuild 布局重建
  2. 尺寸、颜色改变时:Vertices to GraphicRebuild 图像重建
  3. 材质改变时:Material to GraphicRebuild 图像重建

层级改变、应用动画属性(DidApplyAnimationProperties) :All to Rebuild 重建所有


.
.
.
.
.


嗨,我是作者Vin129,逐儿时之梦正在游戏制作的技术海洋中漂泊。知道的越多,不知道的也越多。希望我的文章对你有所帮助:)


上一篇 下一篇

猜你喜欢

热点阅读