UGUI源码分析:LayoutSystem布局系统

本文深入分析UGUI的LayoutSystem,从LayoutRebuilder的标记和重建过程探讨布局逻辑。布局组件主要由LayoutGroup子类实现,ILayoutElement接口用于接收布局信息。后续将聚焦LayoutGroup的详细分析。

系列

UGUI源码分析系列总览
相关前置:
UGUI CanvasUpdateSystem源码分析


UML图一览

在这里插入图片描述

LayoutSystem

Related Class: LayoutRebuilder、LayoutGroup、Canvas、CanvasUpdateRegistry、

Related Interface: ILayoutElement、ILayoutController、ILayoutIgnorer、

Intro: CanvasUpdateSystem中更新布局的具体实现系统。

  • ILayoutElement: 布局元素,布局的接收方,存储有关布局的信息
  • ILayoutController:布局控制接口,布局的实施方,制定布局规则
  • ILayoutIgnorer:忽略布局接口,忽略开关开启状态将忽略该物体的布局

LayoutSystem,是UGUI中由CanvasUpdateSystem发起(m_LayoutRebuildQueue中大部分都是LayoutRebuilder)的关于布局排列的处理系统

本文将从LayoutSystem的响应逻辑切入,并在之后的文章中结合具体的组件来分析整个LayoutSystem。


LayoutRebuilder

标记

UGUI组件(如GraphicScrollRect…)在需要布局处理时会通过标记的方式将自身RectTransform封装成一个LayoutRebuilder对象添加进CanvasUpdateSystem中的布局队列(LayoutRebuildQueue)中等待被重建。

public static void MarkLayoutForRebuild(RectTransform rect)
{
   
   
    if (rect == null || rect.gameObject == null)
        return;
    var comps = ListPool<Component>.Get();
    bool validLayoutGroup = true;
    RectTr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值