using UnityEngine.UI; using UnityEngine; using UnityEngine.EventSystems; using KTGMGemClient; public class ImageWater : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler { RectTransform rectTransform;//自身Rect GameObject target;//推拽到塔位置的标识 Image tmpImage;//自身图片 Vector2 pos;//初始坐标 // Start is called before the first frame update void Start() { rectTransform = GetComponent(); pos = rectTransform.anchoredPosition; tmpImage = GetComponent(); } public void SetTarget(GameObject target) { this.target = target; } bool isDraging; public bool IsDraging { get { return isDraging; } } Vector3 dragPos;//开始拖拽的临时变量 public void OnDrag(PointerEventData eventData) { RectTransformUtility.ScreenPointToWorldPointInRectangle(rectTransform, eventData.position, eventData.enterEventCamera, out dragPos); rectTransform.position = dragPos; } public void OnBeginDrag(PointerEventData eventData) { isDraging = true; tmpImage.raycastTarget = false; } public void OnEndDrag(PointerEventData eventData) { isDraging = false; if (target != null) { //生成一个1级的水元素塔 Debug.Log("生成一个1级的水元素塔"); EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateWaterLv1); gameObject.SetActive(false); target.GetComponent().sprite = tmpImage.sprite; } else { rectTransform.anchoredPosition = pos; tmpImage.raycastTarget = true; } } }