namespace UnityEngine.EventSystems { /// /// Base behaviour that has protected implementations of Unity lifecycle functions. /// public abstract class UIBehaviour : MonoBehaviour { protected virtual void Awake() {} protected virtual void OnEnable() {} protected virtual void Start() {} protected virtual void OnDisable() {} protected virtual void OnDestroy() {} /// /// Returns true if the GameObject and the Component are active. /// public virtual bool IsActive() { return isActiveAndEnabled; } #if UNITY_EDITOR protected virtual void OnValidate() {} protected virtual void Reset() {} #endif /// /// This callback is called if an associated RectTransform has its dimensions changed. The call is also made to all child rect transforms, even if the child transform itself doesn't change - as it could have, depending on its anchoring. /// protected virtual void OnRectTransformDimensionsChange() {} protected virtual void OnBeforeTransformParentChanged() {} protected virtual void OnTransformParentChanged() {} protected virtual void OnDidApplyAnimationProperties() {} protected virtual void OnCanvasGroupChanged() {} /// /// Called when the state of the parent Canvas is changed. /// protected virtual void OnCanvasHierarchyChanged() {} /// /// Returns true if the native representation of the behaviour has been destroyed. /// /// /// When a parent canvas is either enabled, disabled or a nested canvas's OverrideSorting is changed this function is called. You can for example use this to modify objects below a canvas that may depend on a parent canvas - for example, if a canvas is disabled you may want to halt some processing of a UI element. /// 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; } } }