using UnityEngine; using UnityEngine.EventSystems; using KTGMGemClient; using UnityEngine.UI; public class ImageFire1 : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IDragHandler, IBeginDragHandler, IEndDragHandler { ImageFire2 imageFire2; public void OnPointerEnter(PointerEventData eventData) { if (imageFire2.IsDraging) { imageFire2.SetTarget(this); } } public void OnPointerExit(PointerEventData eventData) { if (imageFire2.IsDraging) { imageFire2.SetTarget(null); } } GameObject level1, level2;//等级标志 bool canDrag;//是否可以推拽 RectTransform rectTransform;//自身Rect public RectTransform GetRect { get { return rectTransform; } } GameObject target;//推拽到塔位置的标识 Image tmpImage;//自身图片 Vector2 pos;//初始坐标 //Vector3 startP; public Vector2 GetStartP { get { return pos; } } // Start is called before the first frame update private void Awake() { //startP = transform.position; rectTransform = GetComponent(); imageFire2 = transform.parent.Find("Image_Fire2").GetComponent(); level1 = transform.Find("Image_1").gameObject; level2 = transform.Find("Image_2").gameObject; level2.SetActive(false); tmpImage = GetComponent(); rectTransform = GetComponent(); pos = rectTransform.anchoredPosition; } //合成宝石 public void Add() { Debug.Log("合成了宝石"); level1.SetActive(false); level2.SetActive(true); canDrag = true; EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.AddCard); } public void SetTarget(GameObject target) { this.target = target; } bool isDraging; public bool IsDraging { get { return isDraging; } } Vector3 dragPos;//开始拖拽的临时变量 public void OnDrag(PointerEventData eventData) { if (!canDrag) { return; } RectTransformUtility.ScreenPointToWorldPointInRectangle(rectTransform, eventData.position, eventData.enterEventCamera, out dragPos); //dragPos.z = 0; rectTransform.position = dragPos; } public void OnBeginDrag(PointerEventData eventData) { if (!canDrag) { return; } isDraging = true; tmpImage.raycastTarget = false; } public void OnEndDrag(PointerEventData eventData) { if (!canDrag) { return; } isDraging = false; if (target != null) { //生成一个2级的火焰塔 Debug.Log("生成一个2级的火焰塔"); EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateFireLv2); gameObject.SetActive(false); target.GetComponent().sprite = tmpImage.sprite; } else { rectTransform.anchoredPosition = pos; tmpImage.raycastTarget = true; } } }