系列
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组件(如Graphic、ScrollRect…)在需要布局处理时会通过标记的方式将自身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