using System;
using UnityEngine;
using UnityEngine.EventSystems; // 引入UI命名空间
public class UIFollowMouse : MonoBehaviour,IBeginDragHandler, IDragHandler,IEndDragHandler
{/// <summary>/// 标识/// </summary>public int mId;private RectTransform rectTransform;private RectTransform area;//canvas区域范围private void Start(){rectTransform = GetComponent<RectTransform>();area = GetComponentInParent<Canvas>().GetComponent<RectTransform>();}private Vector2 _offset;public void OnBeginDrag(PointerEventData eventData){if (rectTransform == null || area == null )return;// 将鼠标的屏幕位置转换为UI元素的世界位置Vector2 localPointerPosition;if (RectTransformUtility.ScreenPointToLocalPointInRectangle(area, eventData.position, eventData.enterEventCamera, out localPointerPosition)){// 设置UI元素的位置以跟随鼠标_offset = rectTransform.anchoredPosition - localPointerPosition;}}public void OnDrag(PointerEventData eventData){if (rectTransform == null || area == null)return;Vector2 localPointerPosition;if (RectTransformUtility.ScreenPointToLocalPointInRectangle(area, eventData.position, eventData.enterEventCamera, out localPointerPosition)){// 设置UI元素的位置以跟随鼠标//_offset = rectTransform.position - localPointerPosition;rectTransform.anchoredPosition = localPointerPosition + _offset;}}public Action<int, Vector2> mEndDragCallBack;public void OnEndDrag(PointerEventData eventData){mEndDragCallBack?.Invoke(mId, rectTransform.anchoredPosition);}}