脚本挂在物品上即可
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class ItemDrag : MonoBehaviour,IBeginDragHandler, IDragHandler, IEndDragHandler
{
private Vector3 offset;
private Vector3 startPos;
private Transform startParent;
private Transform dragParent;
private Image selfImage;
void Start()
{
selfImage = GetComponent<Image>();
dragParent = GameObject.Find("Canvas/DragParent").transform;
}
public void OnBeginDrag(PointerEventData eventData)
{
startParent = transform.parent;
startPos = transform.localPosition;
transform.SetParent(dragParent);
offset = transform.position - (Vector3)eventData.position;
selfImage.raycastTarget = false;
}
public void OnDrag(PointerEventData eventData)
{
transform.position = (Vector3)eventData.position + offset;
}
public void OnEndDrag(PointerEventData eventData)
{
GameObject target = eventData.pointerCurrentRaycast.gameObject;
if (target == null)
{
transform.SetParent(startParent.transform);
transform.localPosition= startPos;
}
else
{
if (target.tag == "BagItemBg")
{
if (target.transform.childCount > 0)
{
target.transform.GetChild(0).SetParent(startParent);
}
transform.SetParent(target.transform);
transform.position = target.transform.position;
}
else if (target.tag == "BagItem")
{
transform.SetParent(target.transform.parent);
transform.position = target.transform.position;
target.transform.SetParent(startParent);
target.transform.position = startParent.position;
}
else
{
transform.SetParent(startParent.transform);
transform.localPosition = startPos;
}
}
selfImage.raycastTarget = true;
}
}