代码:需要移动物体上的代码(这里是血瓶)
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;
}
}
}
把脚本放到格子上就行了,
有点不好,鼠标移动到格子上才有放入的效果(有需要的可以试试)