申明了一个CanvasUpdateRegistry类型的instance单例类
/// <summary>
/// Get the singleton registry instance.
/// </summary>
public static CanvasUpdateRegistry instance
{
get
{
if (s_Instance == null)
s_Instance = new CanvasUpdateRegistry();
return s_Instance;
}
}
private readonly IndexedSet<ICanvasElement> m_LayoutRebuildQueue = new IndexedSet<ICanvasElement>();
通过 InternalRegisterCanvasElementForLayoutRebuild
接口将 ICanvasElement 加入m_LayoutRebuildQueue,不会重复添加,外界通过调用静态函数RegisterCanvasElementForLayoutRebuild将ICanvasElement加入队列
关于 IndexedSet
外部添加途径
LayoutRebuilder.MarkLayoutForRebuild(rectTransform);
在需要更新位置、大小的组件里被调用(通常在onenable、setdirty中)
private readonly IndexedSet<ICanvasElement> m_GraphicRebuildQueue = new IndexedSet<ICanvasElement>();
CanvasUpdateRegistry.RegisterCanvasElementForGraphicRebuild(this);