//-------------------------------------------------------- // [Author]: 玩个游戏 // [ Date ]: Monday, July 31, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.EventSystems; using System; public class DragItem:MonoBehaviour,ICanvasRaycastFilter,IBeginDragHandler,IDragHandler,IEndDragHandler { [SerializeField] RectTransform m_Area; public RectTransform area { get { return m_Area; } } [SerializeField] bool m_RaycastTarget = true; public bool raycastTarget { get { return m_RaycastTarget; } private set { m_RaycastTarget = value; } } RectTransform m_RectTransform; public RectTransform rectTransform { get { return this.transform as RectTransform; } } public void OnBeginDrag(PointerEventData eventData) { raycastTarget = false; this.transform.position = UIUtility.ClampWorldPosition(area,eventData); } public void OnDrag(PointerEventData eventData) { this.transform.position = UIUtility.ClampWorldPosition(area,eventData); } public void OnEndDrag(PointerEventData eventData) { raycastTarget = true; if(eventData.pointerEnter == null) { return; } var container = eventData.pointerEnter.GetComponent(); if(container == null) { return; } var contain = UIUtility.RectTransformContain(eventData.pointerEnter.transform as RectTransform,rectTransform); if(contain) { rectTransform.position = eventData.pointerEnter.transform.position; } } public bool IsRaycastLocationValid(Vector2 sp,Camera eventCamera) { return raycastTarget; } }