简单的拖拽物体到物品栏

在这里插入图片描述
在这里插入图片描述
代码:需要移动物体上的代码(这里是血瓶)

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;
        }
        
    }
}

把脚本放到格子上就行了,
有点不好,鼠标移动到格子上才有放入的效果(有需要的可以试试)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章