Задать вопрос
KeysCG
@KeysCG
3d designer/Art Designer

Почему объект не возвращается в ячейку?

Доброго времени суток!
Подскажите пожалуйста почему префаб не хочет вставать в ячейку в заданной области?
Уже всю голову себе сломал и не могу понять в чём беда.
У меня есть слоты где хранятся префабы (item) в инвентаре и есть область на которой весит данный скрипт (при отпускании item в этой области должен ставать в ячейки которые заданы в slotsInventory):
using UnityEngine;
using UnityEngine.EventSystems;

public class ItemDropInventory : MonoBehaviour, IDropHandler
{
    public Transform slotsInventory;
    public void OnDrop(PointerEventData eventData)
    {
        if (eventData.pointerDrag != null)
        {
            eventData.pointerDrag.transform.SetParent(slotsInventory);
        }
    }
}


Это висит на самом item:
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class ItemDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    RectTransform rectTransform;
    Canvas canvasInventory;
    Button itemButton;

    void Start()
    {
        rectTransform = GetComponent<RectTransform>();
        itemButton = GetComponent<Button>();
        canvasInventory = GetComponentInParent<Canvas>();
    }
    public void OnBeginDrag(PointerEventData eventData)
    {
        rectTransform.SetParent(canvasInventory.GetComponent<RectTransform>());
        itemButton.enabled = false;
    }
    public void OnDrag(PointerEventData eventData)
    {
        rectTransform.anchoredPosition += eventData.delta / canvasInventory.scaleFactor;
    }
    public void OnEndDrag(PointerEventData eventData)
    {
        itemButton.enabled = true;
    }
}

А у меня item просто останавливается на том месте где я его отпускаю :(
Иногда если много раз клацать по item или как то местами его двигать, то срабатывает и он стаёт в ячейку. То есть оно как будто раз через раз срабатывает :(
  • Вопрос задан
  • 42 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы