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

    LayoutRebuilder

    图片转自:https://blog.csdn.net/qq_28820675/article/details/106245195

    参考:https://blog.csdn.net/qq826364410/article/details/88141753

    Graphic的Layout是通过LayoutRebuilder.MarkLayoutForRebuild方法来标记重建的。

    MarkLayoutRebuild:

    1.找到父对象中最近的ILayoutGroup组件layoutRoot。

    2.从LayoutRebuilder对象池中Pop出一个LayoutRebuilder并用layoutRoot初始化。

    3.如果创建的LayoutRebuilder已经在CanvasUpdateRegistry的布局重建队列中,就更新,否则就加入。

     LayoutRebuilder继承了ICanvasElement,在重建时遍历CanvasUpdateRegistry的重建队列,调用Rebuild方法。

    ReBuild:实现了ICanvasElement的ReBuild方法

    PerformLayoutCalculation:参数:(layoutRoot,回调函数计算布局)

    以layoutRoot的子对象为参数递归调用该方法,先计算子对象布局,然后计算父对象布局,父对象的布局计算需要依赖子对象的大小(比如ContentSizeFitter)

    PerformLayoutControl:参数:(layoutRoot,回调函数计算布局)

    1.在layoutRoot上获取所有ILayoutController类型的组件

    2.先处理组件中为ILayoutSelfController类型的情况,也就是先处理本身的RectTransform大小设置

    3.然后处理组件中不是ILayoutSelfController了性的情况,处理比如子对象的布局组(LayoutGroup)的RectTransform大小设置。

    4.然后以m_ToRebuild的子对象为参数,递归调用PerformLayoutControl方法,处理子对象本身的RectTransform大小和子对象的子对象的RectTransform大小。

  • 相关阅读:
    C#根据url生成唯一的key
    MyBatis基本配置和实践(四)
    MyBatis基本配置和实践(三)
    MyBatis基本配置和实践(二)
    MyBatis基本配置和实践(一)
    dbcp2、c3p0、druid连接池的简单配置
    HTTP长连接和短连接
    Java Web高性能开发
    三层构架 和 MVC 是什么?
    Docker bridge探索
  • 原文地址:https://www.cnblogs.com/mcyushao/p/13938471.html
Copyright © 2011-2022 走看看