using F3Device.Screen; using QFramework; using QFramework.Example; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class UIImageDrag_JiHe : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { RectTransform rect; Canvas canvas; // 用于坐标转换 List raycastResults; GameObject target; public Vector3 originPos; bool isOverTarget = false; // 是否在目标物体上结束拖拽 void Awake() { rect = GetComponent(); canvas = GetComponentInParent(); // 获取父级Canvas originPos = rect.transform.localPosition; raycastResults = new List(); } public void OnBeginDrag(PointerEventData eventData) { } public void OnDrag(PointerEventData eventData) { rect.transform.position = Input.mousePosition; } public void OnEndDrag(PointerEventData eventData) { var uiPanel = UIKit.GetPanel(); if (uiPanel == null) return; // 获取目标对象名称 string targetObjName = uiPanel.Data.TargetObj; // 判断当前拖拽的物体是否与目标物体匹配 if (isOverTarget && target != null && target.name == targetObjName) { Debug.Log("成功放置到目标物体: " + targetObjName); // 可以在这里执行成功放置的逻辑 // 例如:将当前物体位置固定到目标位置 transform.position = target.transform.position; // 通知UI面板操作成功 // uiPanel.OnDragSuccess(); } else { Debug.Log("未放置到正确目标,返回原位"); Debug.Log(originPos+"??????"); // 未放置到正确目标,返回原始位置 rect.anchoredPosition = Vector3.zero; } // 重置状态 isOverTarget = false; target = null; } }