using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.UI; public class TouchArea : MonoBehaviour ,IPointerDownHandler,IDragHandler,IPointerExitHandler, IPointerUpHandler { [HideInInspector] public Image img; public bool MouseOnly = false; [System.Serializable] public class OnPointerDownEvent : UnityEvent { }; public OnPointerDownEvent PointerDown = new OnPointerDownEvent(); [System.Serializable] public class OnPointerDragEvent : UnityEvent { }; public OnPointerDragEvent PointerDrag = new OnPointerDragEvent(); [System.Serializable] public class OnPointerUpEvent : UnityEvent { }; public OnPointerUpEvent PointerUp = new OnPointerUpEvent(); [System.Serializable] public class OnPointerExitEvent : UnityEvent { }; public OnPointerExitEvent PointerExit = new OnPointerExitEvent(); private void Awake() { img = GetComponent(); } public void OnPointerDown(PointerEventData eventData) { if (PointerDown == null) return; if (skip_on_mouse_only(eventData)) return; PointerDown.Invoke(eventData); } public void OnDrag(PointerEventData eventData) { if (PointerDrag == null) return; if (skip_on_mouse_only(eventData)) return; PointerDrag.Invoke(eventData); } public void OnPointerUp(PointerEventData eventData) { if (PointerUp == null) return; if (skip_on_mouse_only(eventData)) return; PointerUp.Invoke(eventData); } public void OnPointerExit(PointerEventData eventData) { if (PointerExit == null) return; if (skip_on_mouse_only(eventData)) return; PointerExit.Invoke(eventData); } private bool skip_on_mouse_only(PointerEventData eventData) { return MouseOnly && eventData.pointerId != -1; } }