UIEventHandler.cs 887 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. using UnityEngine;
  2. using UnityEngine.Events;
  3. using UnityEngine.EventSystems;
  4. /// <summary>
  5. /// 在任意地方都可以监听到UI的输入事件
  6. /// </summary>
  7. public class UIEventHandler : MonoBehaviour
  8. {
  9. public class TriggerEvent : UnityEvent<GameObject> {}
  10. private TriggerEvent m_OnClick = new TriggerEvent();
  11. public TriggerEvent onClick
  12. {
  13. get { return m_OnClick; }
  14. set { m_OnClick = value; }
  15. }
  16. private void OnEnable()
  17. {
  18. AdvExecuteEvents.onClick.AddListener(OnPointerClick);
  19. }
  20. private void OnDisable()
  21. {
  22. AdvExecuteEvents.onClick.RemoveListener(OnPointerClick);
  23. }
  24. public virtual void OnPointerClick(PointerEventData eventData)
  25. {
  26. onClick.Invoke(eventData.pointerCurrentRaycast.gameObject);
  27. }
  28. public void RemoveListener()
  29. {
  30. onClick.RemoveAllListeners();
  31. }
  32. }