zoukankan      html  css  js  c++  java
  • UGUI源码(二)

    CanvasUpdateSystem

    下图转自:https://blog.csdn.net/qq_28820675/article/details/105746002

    CanvcasUpdateRegistry在构造函数中将PerformUpdate方法注册进Canvas的willRenderCanvas中,Canvas在渲染前会调用willRenderCanvases,即执行PerformUpdate。

    CanvasUpdateRegistry维护了两个索引集(不会存放相同的元素):布局重建队列和图像重建队列

     通过RegisterCanvasElementForLayoutRebuild(ICanvasElement element)添加到布局重建队列

    通过RegisterCanvasElementForGraphicRebuild(ICanvasElement element)添加到图像重建队列

    移除:

    CanvasUpdate:

     除了最后一个枚举项,其他五个项分别代表了布局的三个阶段和渲染的两个阶段。

    PerformUpdate:

    1.从两个序列中删除不可用的元素

    2.对布局重建队列依据父对象数量进行排序

    3.分别以PreLayout,Layout,PostLayout的参数顺序调用每一个元素的Rebuild方法

    4.调用所有元素的的LayoutComplete(布局重建完成),并清空布局重建队列

    5.布局更新结束

    6.以PreRender,LaePreRender的参数顺序调用每一个元素的Rebuild方法

    7.调用所有元素的GraphicUpdateComplete(图形重建完成),并清空图形重建队列

    8.图形更新结束

    脏标记:

    一般UI组件在监听函数(例如:OnRectTransformDimensionsChange(实现UIBehaviour))中添加脏标记,并添加到重建队列中。

    Graphic中的三种脏标记:

  • 相关阅读:
    Java's Volatile Keyword
    reflection
    Spring
    Stack
    Set
    Vector & ArrayList
    CreateFileDemo
    session原理
    multithreadingDemo
    REST风格
  • 原文地址:https://www.cnblogs.com/mcyushao/p/13937596.html
Copyright © 2011-2022 走看看