using UnityEngine; using UnityEngine.EventSystems; using KTGMGemClient; using UnityEngine.UI; public class ImageWood : GuideImageBase, IPointerEnterHandler, IPointerExitHandler, IDragHandler, IBeginDragHandler, IEndDragHandler { ImageWood2 imageWood2; public void OnPointerEnter(PointerEventData eventData) { if (imageWood2.IsDraging) { imageWood2.SetTarget(this.gameObject); } } public void OnPointerExit(PointerEventData eventData) { if (imageWood2.IsDraging) { imageWood2.SetTarget(null); } } GameObject level1, level2;//等级标志 bool canDrag;//是否可以推拽 RectTransform rectTransform;//自身Rect public RectTransform GetRect { get { return rectTransform; } } GameObject target;//推拽到塔位置的标识 Image tmpImage;//自身图片 Vector2 pos;//初始坐标 GameObject levelImage; //Vector3 startP; public Vector2 GetStartP { get { return pos; } } // Start is called before the first frame update private void Awake() { //startP = transform.position; rectTransform = GetComponent(); imageWood2 = transform.parent.Find("Image_Wood2").GetComponent(); level1 = transform.Find("Image_1").gameObject; level2 = transform.Find("Image_2").gameObject; level2.SetActive(false); tmpImage = GetComponent(); rectTransform = GetComponent(); pos = rectTransform.anchoredPosition; levelImage = transform.Find("Image_2").gameObject; } //合成宝石 public void Add() { Debug.Log("合成了宝石"); level1.SetActive(false); level2.SetActive(true); canDrag = true; GuideCtrl.Ins.AddCard(); //EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.AddCard); EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.GuidePlayUpgradeEffect, transform.position); } public override void SetTarget(GameObject target) { this.target = target; } 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; levelImage.SetActive(false); } public void OnEndDrag(PointerEventData eventData) { if (!canDrag) { return; } isDraging = false; if (target != null) { Debug.Log("生成一个2级的木塔"); EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.CreateWoodLv2); gameObject.SetActive(false); //target.GetComponent().sprite = tmpImage.sprite; } else { rectTransform.anchoredPosition = pos; tmpImage.raycastTarget = true; levelImage.SetActive(true); } } }