关于源码
关于源码可以参考这篇博客下载或调试。
Graphic
简介
继承自
UIBehaviour
(所有UI
组件的基类,负责接收来自UnityEngine
或者UnityEditor
的事件)继承
ICanvasElement
(负责接收Canvas
重新渲染的事件)
UGUI
的核心组件,负责显示图像抽象类
MaskableGraphic
继承自该类,MaskableGraphic
是可遮罩图像(RawImage
、Image
和Text
的基类)的基类。为
MaskableGraphic
及其子类提供了公用的可继承的方法
特性
[DisallowMultipleComponent] [RequireComponent(typeof(CanvasRenderer))] [RequireComponent(typeof(RectTransform))] [ExecuteInEditMode]
DisallowMultipleComponent
:不允许一个对象有两个相同的组件,即不能有两个可遮罩图像。(eg.Image
或者一个RawImage
和一个Text
)。
RequireComponent
:依赖于CanvasRenderer
(画布渲染器)和RectTransform
(矩形变换)两类组件。
ExecuteInEditMode
:在编辑模式执行。
借助UIBehaviour的触发点的逻辑
OnEnable : 通过
CacheCanvas
方法,获取父对象中的Canvas
组件。并注册到GraphicRegistry
(可以看成Canvas
的渲染管理中心,可以获取指定Canvas
所包含的Graphic
等信息)。修改s_WhiteTexture
(对应属性MainTexture
)。最后SetAllDirty
(设置Layout
、Vertices
、Material
为Dirty
)。OnDisable : 从
GraphicRegistry
和CanvasUpdateRegistry
两个管理中心中注销,并清理CanvasRenderer
,完成后通知LayoutRebuilder
重建布局。OnRectTransformDimensionsChange : 当
RectTransform
维度改变时,将Layout
、Vertices
设为Dirty
。OnBeforeTransformParentCh