Graphic是UGUI的核心组件,负责显示图像。它是一个抽象类,是MaskableGraphic(可遮罩图像)的基类(同样是抽象类),而后者是RawImage、Image和Text的基类。虽然Selectable系列组件与Graphic没有明确的依赖关系,但是在UGUI内核大探究(四)Selectable与Button中,我们讲到Selectable使用Graphic(或Image)来显示状态变化。
今天我们就探究一下Graphic的原理。
按照惯例,附上UGUI源码下载地址。
Graphic的Attribute(特性):
[DisallowMultipleComponent]
[RequireComponent(typeof(CanvasRenderer))]
[RequireComponent(typeof(RectTransform))]
[ExecuteInEditMode]
DisallowMultipleComponent:不允许一个对象有两个相同的组件,即不能有两个Image或者一个RawImage和一个Text。
RequireComponent:依赖于CanvasRenderer(画布渲染器)和RectTransform(矩形变换)两类组件。
ExecuteInEditMode:在编辑模式执行。
Graphic是一个抽象类,这意味着不能创建它的实例,它为MaskableGraphic及其子类提供了公用的可继承的方法。
Graphic继承自UIBehaviour,后者也是一个抽象类,它是所有UI组件的基类,负责接收来自UnityEngine或者UnityEditor的事件。
Graphic还继承了ICanvasElement,后者是一个接口,负责接收Canvas重新渲染的事件(参考UGUI内核大探究(六)CanvasUpdateRegistry)。