| //-------------------------------------------------------- | 
| //    [Author]:           玩个游戏 | 
| //    [  Date ]:           Saturday, March 16, 2019 | 
| //-------------------------------------------------------- | 
| using System; | 
| using UnityEngine; | 
| using UnityEngine.Events; | 
| using UnityEngine.EventSystems; | 
|   | 
| public class GestureCatcher : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler | 
| { | 
|     Action<Vector2> m_OnDrag; | 
|     Vector2 prePosition = Vector2.zero; | 
|   | 
|     public void SetDragListener(Action<Vector2> callBack) | 
|     { | 
|         m_OnDrag = callBack; | 
|     } | 
|   | 
|     public void RemoveListener() | 
|     { | 
|         m_OnDrag = null; | 
|     } | 
|   | 
|     public void OnBeginDrag(PointerEventData eventData) | 
|     { | 
|         prePosition = eventData.position; | 
|     } | 
|   | 
|     public void OnDrag(PointerEventData eventData) | 
|     { | 
|         var deltaPosition = eventData.position - prePosition; | 
|         m_OnDrag.Invoke(deltaPosition); | 
|         prePosition = eventData.position; | 
|     } | 
|   | 
|     public void OnEndDrag(PointerEventData eventData) | 
|     { | 
|         prePosition = eventData.position; | 
|     } | 
|   | 
| } |