UIBehaviour:是所有UI组件的基类,UI组件都是直接或者间接继承UIBehaviour这个抽象类,<font color=red>它继承自MonoBehaviour,所以拥有和Unity相同的生命周期。</font>
源码解析
只会在物体创建时执行一次 ,与Mono Awake调用时机和次数保持一致
protected virtual void Awake(){}
在物体显示时执行一次,与Mono OnEnable一致
protected virtual void OnEnable(){}
在物体第一次激活时执行一次,在Awake之后,第一帧Update之前执行,与Mono Start一致
protected virtual void Start(){}
在物体隐藏时执行一次,与Mono OnDisable 一致
protected virtual void OnDisable(){}
在当前界面被销毁时调用一次,与Mono Destroy一致
protected virtual void OnDestroy(){}
在编辑器模式下:当脚本被加载(禁用或启用)或者Inspector窗口的值出现变化的时候会被调用,使用时添加#if UNITY_EDITOR
protected virtual void OnValidate(){}
在编辑器模式下:当脚本恢复默认值时调用,使用时添加#if UNITY_EDITOR
protected virtual void Reset(){}
当RectTransform变化时候调用,Anchors、Pivot、Width、Height变化时调用,Transform、Rotation、Scale变化时不调用
protected virtual void OnRectTransformDimensionsChange(){}
protected virtual void OnBeforeTransformParentChanged(){}
protected virtual void OnTransformParentChanged(){}
在Canvas状态变化时调用,比如禁用Canvas组件
protected virtual void OnDidApplyAnimationProperties(){}
protected virtual void OnCanvasGroupChanged(){}
protected virtual void OnCanvasHierarchyChanged(){}
获取GameObject和Component是否处于激活状态
public virtual bool IsActive()
{
return isActiveAndEnabled;
}
获取GameObject和Component是否被销毁
public bool IsDestroyed()
{
return this == null;
}