一:总览
canvas.SendWillCanvas 为UGUI网格刷新,每次只刷新单个网格对象。
willRendeCanvas 为 canvas 类中定义的静态委托事件
1 canvas 中刷新函数定义canvasUpdateRegistry.cs 全局维持一个静态单例 ,内部维护两个数据结构 m_layOutRebuildQueue 、m_GraphicRebuildQueue 两个队列
2 canvasUpdateRegistry 中维持着两个刷新容器集合canvasUpdateRegistry 中刷新的主要逻辑为:
3 刷新的主要逻辑 单个元素的刷新二 :继承 Graphic的UI控件类刷新规则 - image 、text、 rawImage
m_GraphicRebuildQueue 刷新规则
Graphic中定义的两个控制效果的布尔字段 2 graphic中当两个值变会引起网格重建注意:如果是非Active状态,则不会参与重建 3 修改vertex的几个变量会引起网格重建 4 引起材质球变化的函数调用,主要是一些mask遮罩等效果。 5 graphic 会重新删除下网格重新刷新网格注意: 材质变化 不会引起网格重建,只会修改下材质球!
6 graphic 更新材质球3 m_layOutRebuildQueue 刷新规则
注册的几个地方 ,主要是在OnValid()的时候 需要刷新一下 在OnEnable中 每次开启关闭 需要重新刷新下 设置缓冲dirty会重新刷新下注意:当前gridLayout 发生变化 ,目前来看 不会发生网格重建,只会修改显示区间 只有scrollRect在非编辑器下才会管用。
其他目前都只是在editor下才会有用,因为除了ScrollRect ,其他全部在Editor的OnValid()函数下才会更新。
网友评论