namespace UnityEngine.EventSystems { public abstract class UIBehaviour : MonoBehaviour { #region MonoBehaviour共有生命周期 protected virtual void Awake() {} protected virtual void OnEnable() {} protected virtual void Start() {} protected virtual void OnDisable() {} protected virtual void OnDestroy() {} // 父节点(包括非直接父节点的祖先节点)在hierachy中的父子层级改变前调用 protected virtual void OnBeforeTransformParentChanged() { } // 父节点(包括非直接父节点的祖先节点)在hierachy中的父子层级改变完调用 protected virtual void OnTransformParentChanged() { } #endregion public virtual bool IsActive() { return isActiveAndEnabled; } #if UNITY_EDITOR // 组件值在inspector中被修改时调用 protected virtual void OnValidate() {} // inspector中右键reset调用 protected virtual void Reset() {} #endif #region UGUI特有回调函数 // 当gRectTransform大小改变(不包括位置)的时候回调。且如果子物体由于锚点的设置也会导致 // 大小改变时也会调用子物体的这个回调。如果子物体大小不会因此改变,那么不会触发这个回调 protected virtual void OnRectTransformDimensionsChange() {} // 用animation clip修此脚本属性值的时候触发。可以用于修正动画结果 protected virtual void OnDidApplyAnimationProperties() {} // 祖先节点CanvasGroup参数变化或enable\disable或canvasGroup下面的canvas的层级变化 protected virtual void OnCanvasGroupChanged() {} // 祖先节点Canvas enable\disable或OverrideSorting状态改变 protected virtual void OnCanvasHierarchyChanged() {} #endregion public bool IsDestroyed() { // Workaround for Unity native side of the object // having been destroyed but accessing via interface // won't call the overloaded == return this == null; } } }