Drag & Drop юнити: не могу перетаскивать объект больше чем один раз

Делаю систему Drag & Drop на Unity. Есть скрипт Slot в котором указывается предмет находящийся в слоте, иконка и т.д. :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;



public class Slot : MonoBehaviour, IPointerDownHandler, IBeginDragHandler, IDragHandler, IEndDragHandler, IDropHandler
{
    public int _hotSelect;
    public KeyCode useButton = KeyCode.F;
    //private Drop dropScript;
    public GameObject dragObj;
    public bool isFull;
    public bool isCompFull;
    public bool isSelected;
    public Item _item;
    public Image icon;
    public Sprite empty;
    public int count;
    public Text numText;
    private void Start()
    {
        //dropScript = GetComponent<Drop>();
    }
    public void Update()
    {
        if (count <= 1) numText.text = "";
        else numText.text = count.ToString();       
        if (count >= 12)
        {
            numText.text = "12";
            isCompFull = true;
        }
        if(count < 12) isCompFull = false;
        if(count < 1)
        {
            isFull = false;
            icon.sprite = empty;
            _item = null;
        }
        if(count > 0) icon.sprite = _item.Icon;
    }

    public void OnPointerDown(PointerEventData eventData)
    {
        //dropScript._sel();
        dragObj.GetComponent<DragAndDrop>().bdSlot = this.GetComponent<Slot>();
    }

    public void OnBeginDrag(PointerEventData eventData)
    {
        dragObj.GetComponent<DragAndDrop>()._BeginDrag();
    }

    public void OnDrag(PointerEventData eventData)
    {
        dragObj.GetComponent<DragAndDrop>()._Drag();
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        dragObj.GetComponent<DragAndDrop>()._EndDrag();
    }

    public void OnDrop(PointerEventData eventData)
    {
        dragObj.GetComponent<DragAndDrop>().bdSlot._item = _item;
        dragObj.GetComponent<DragAndDrop>().bdSlot.count = count;

        _item = dragObj.GetComponent<DragAndDrop>().dragItem;
        count = dragObj.GetComponent<DragAndDrop>().dragCount;

        dragObj = GameObject.FindGameObjectWithTag("DragObj");
    }
}

Также есть визуализация перетаскиваемого объекта(dragObj) со скриптом DragAndDrop:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class DragAndDrop : MonoBehaviour
{
    public int dragCount;
    public Item dragItem;
    public Sprite dragIcon;
    public Slot bdSlot;
    private CanvasGroup canvasGroup;
    public void Start()
    {
        bdSlot = GetComponent<Slot>();
        this.GetComponent<Image>().color = new Color(255, 255, 255, 0);
        canvasGroup = GetComponent<CanvasGroup>();
    }
    public void _BeginDrag()
    {
        canvasGroup.blocksRaycasts = false;
        dragIcon = bdSlot.icon.sprite;
        dragItem = bdSlot._item;
        dragCount = bdSlot.count;
        this.GetComponent<Image>().sprite = dragIcon;
        this.GetComponent<Image>().color = new Color(255, 255, 255, 255);
        bdSlot.count = 0;
    }
    public void _Drag()
    {
        this.transform.position = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 1));
        
    }

    public void _EndDrag()
    {
        this.GetComponent<Image>().color = new Color(255, 255, 255, 0);
        dragIcon = null;
        dragItem = null;
        dragCount = 0;
        
        this.GetComponent<Image>().sprite = dragIcon;
        
        canvasGroup.blocksRaycasts = true;
    }

    
}

Всё работает замечательно, но я не могу перетащить один объект больше чем один раз подряд. Если я например перетащил объект топора, я смогу перетащить его ещё раз только после того как перетащу любой другой предмет. Почему так?


Ответы (1 шт):

Автор решения: Quarky Programs

Исправил: оказывается в Drag&Drop в методе EndDrag после

canvasGroup.blocksRaycasts =  true;

надо было поставить

canvasGroup.blocksRaycasts =  false;

   ..................
→ Ссылка