using UnityEngine;
using UnityEngine.EventSystems;
///
/// UI元素拖动处理组件
///
[RequireComponent(typeof(RectTransform))]
public class UIDragHandler : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler
{
[Header("拖动设置")]
[SerializeField] private bool restrictToParent = true;
[SerializeField] private bool enableSmoothDrag = true;
[SerializeField] private float smoothSpeed = 0.2f;
[Header("事件回调")]
public UnityEngine.Events.UnityEvent onDragBegin;
public UnityEngine.Events.UnityEvent onDrag;
public UnityEngine.Events.UnityEvent onDragEnd;
private RectTransform rectTransform;
private RectTransform parentRectTransform;
private Canvas canvas;
private Vector2 offset = Vector2.zero;
private Vector3 targetPosition;
private bool isDragging = false;
private void Awake()
{
rectTransform = GetComponent();
canvas = GetComponentInParent