using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using UnityEngine.EventSystems; namespace UIWidgets { /// /// Pointer unity event. /// [System.Serializable] public class PointerUnityEvent : UnityEvent { } /// /// Button advanced. You can add callback on PointerEnter/Exit/Down/Up /// public class ButtonAdvanced : UnityEngine.UI.Button, IPointerDownHandler, IPointerUpHandler, IPointerEnterHandler, IPointerExitHandler { /// /// What to do when the event system send a pointer down Event. /// public PointerUnityEvent onPointerDown = new PointerUnityEvent(); /// /// What to do when the event system send a pointer up Event. /// public PointerUnityEvent onPointerUp = new PointerUnityEvent(); /// /// What to do when the event system send a pointer enter Event. /// public PointerUnityEvent onPointerEnter = new PointerUnityEvent(); /// /// What to do when the event system send a pointer exit Event. /// public PointerUnityEvent onPointerExit = new PointerUnityEvent(); /// /// Raises the pointer down event. /// /// Current event data. public override void OnPointerDown(PointerEventData eventData) { onPointerDown.Invoke(eventData); base.OnPointerDown(eventData); } /// /// Raises the pointer up event. /// /// Current event data. public override void OnPointerUp(PointerEventData eventData) { onPointerUp.Invoke(eventData); base.OnPointerUp(eventData); } /// /// Raises the pointer enter event. /// /// Current event data. public override void OnPointerEnter(PointerEventData eventData) { onPointerEnter.Invoke(eventData); base.OnPointerEnter(eventData); } /// /// Raises the pointer exit event. /// /// Current event data. public override void OnPointerExit(PointerEventData eventData) { onPointerExit.Invoke(eventData); base.OnPointerExit(eventData); } } }