代码:需要移动物体上的代码(这里是血瓶)
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class DragDrop : MonoBehaviour,IPointerDownHandler,IBeginDragHandler ,IEndDragHandler,IDragHandler{ private RectTransform m_rectTransform; public Canvas m_Canvas; private CanvasGroup m_CanvasGroup; void Start() { m_rectTransform = GetComponent<RectTransform>(); m_CanvasGroup = GetComponent<CanvasGroup>(); } /// <summary> /// 开始拖放前 /// </summary> /// <param name="eventData"></param> public void OnBeginDrag(PointerEventData eventData) { Debug.Log("OnBeginDrag"); m_CanvasGroup.blocksRaycasts = false; m_CanvasGroup.alpha = 0.6f; } /// <summary> /// 拖拽 /// </summary> /// <param name="eventData"></param> public void OnDrag(PointerEventData eventData) { m_rectTransform.anchoredPosition += eventData.delta/ m_Canvas.scaleFactor; } /// <summary> /// 拖拽结束 /// </summary> /// <param name="eventData"></param> public void OnEndDrag(PointerEventData eventData) { Debug.Log("OnEndDrag拖拽结束"); m_CanvasGroup.blocksRaycasts = true; m_CanvasGroup.alpha = 1f; } public void OnPointerDown(PointerEventData eventData) { Debug.Log("OnPointerDown"); } }代码:物品格子代码
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class IteamSlot : MonoBehaviour, IDropHandler { public void OnDrop(PointerEventData eventData) { if(eventData.pointerDrag!=null) { eventData.pointerDrag.GetComponent<RectTransform>().anchoredPosition = GetComponent<RectTransform>().anchoredPosition; } } }把脚本放到格子上就行了, 有点不好,鼠标移动到格子上才有放入的效果(有需要的可以试试)