2using System.Collections;
3using System.Collections.Generic;
9public class PointerInteractable : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler
14 [SerializeField]
public UnityEvent
OnClick =
new UnityEvent();
15 [SerializeField]
private UnityEvent WhilePointerDown =
new UnityEvent();
17 private bool downNow =
false;
18 private bool wasDown =
false;
55 if (GetComponentInChildren<Button>())
57 var results =
new List<RaycastResult>();
60 EventSystem.current.RaycastAll(eventData, results);
61 foreach (var result
in results)
63 button = result.gameObject.GetComponent<
Button>();
65 button?.onClick?.Invoke();
67 catch (NullReferenceException)
82 WhilePointerDown?.Invoke();
84 if (wasDown && !downNow) {
UnityEngine.UI.Button Button
void OnPointerUp(PointerEventData eventData)
void OnPointerExit(PointerEventData eventData)
void OnPointerDown(PointerEventData eventData)
void OnPointerClick(PointerEventData eventData)
void OnPointerEnter(PointerEventData eventData)