UGUI源码分析:CanvasUpdateSystem 画布刷新系统
2020-06-29 04:45
1251 查看
系列
文章目录
CanvasUpdateSystem
Related Class: Canvas、CanvasUpdateRegistry、ClipperRegistry
Related Interface: ICanvasElement
Related Other: Enum CanvasUpdate
Intro: 由Canvas控制,通过 ICanvasElement 接口,使用脏标记方法来统一更新CanvasElement
ICanvasElement
- 重建方法:void Rebuild(CanvasUpdate executing);
- 布局重建完成:void LayoutComplete();
- 图像重建完成:void GraphicUpdateComplete();
- 检查Element是否无效:bool IsDestroyed();
PerformUpdate
Registry 管理着两个队列
- LayoutRebuildQueue:布局重建
- GraphicRebuildQueue:图像重建
CanvasUpdateRegistry 被初始化时(构造函数)向Canvas中注册了更新函数(PerformUpdate),以用来响应重建。
Canvas.willRenderCanvases += PerformUpdate;
Canvas在渲染前会调用willRenderCanvases,即执行PerformUpdate ,流程如下:
- 首先更新布局,根据父节点多少排序,由内向外更新。更新类型依次为 Prelayout 、Layout 、PostLayout(enum CanvasUpdate)
- 通知布局完成
- ClipperRegistry 进行剪裁
- 更新图像,依次 PreRender、LatePreRender、MaxUpdateValue
- 通知图像更新完成
脏标记
标记延迟执行,优化重新渲染的手段。
详情请见:游戏设计模式:脏标识模式
例如在Graphic 中存在三种脏标分别代表三种等待重建
- 尺寸改变时(RectTransformDimensions):LayoutRebuild 布局重建
- 尺寸、颜色改变时:Vertices to GraphicRebuild 图像重建
- 材质改变时:Material to GraphicRebuild 图像重建
层级改变、应用动画属性(DidApplyAnimationProperties) :All to Rebuild 重建所有
.
.
.
.
.
嗨,我是作者Vin129,逐儿时之梦正在游戏制作的技术海洋中漂泊。知道的越多,不知道的也越多。希望我的文章对你有所帮助:)
相关文章推荐
- UGUI源码分析:LayoutSystem布局系统
- 系统调用入口函数源码分析system_call——X86_64
- UGUI源码分析:系统总结UGUI的全部内容
- java源码分析:从System类中获取系统关键属性信息
- Android系统SystemServer进程启动过程源码分析
- 【精】EOS智能合约:system系统合约源码分析
- 关于Ogre自带输入系统OIS(Object-Oriented Input System)的源码分析
- [置顶] Android源码分析之SystemServer系统服务创建过程
- Android系统Recovery工作原理之使用update.zip升级过程分析(三)---Android系统的三种启动模式
- MES项目导入--模组分析-SMT上料防错系统(Error Proof System)
- 支付宝资深架构师的分布式追踪 & APM 系统 SkyWalking 源码分析— DataCarrier 异步处理库
- Android磁盘管理-系统源码分析(1)
- android 解析未安装apk中的AndroidManifest.xml以及系统源码分析
- JVM源码分析之System.currentTimeMillis及nanoTime原理详解
- Android系统Recovery工作原理之使用update.zip升级过程分析(六)---Recovery服务流程细节【转】
- f2fs——新型flash友好文件系统gc部分源码分析
- Android系统Recovery工作原理之使用update.zip升级过程分析(七)---Recovery服务的核心install_package函数【转】
- Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程
- Lighttpd1.4.20源码分析之插件系统(2)---插件的加载和初始化
- Android系统Recovery工作原理之使用update.zip升级过程分析(四)---Android系统Recovery模式的工作原理