Как узнать, был ли мой элемент удален из группы макетов сетки? - PullRequest
0 голосов
/ 10 февраля 2020

Я работаю в проекте единства. Здесь у меня есть игровой объект с группой макетов сетки. У меня также есть элементы, которые мне нужно поместить в эту группу макетов. Для этого я реализовал функцию перетаскивания: Например,

public class DragDropMove : MonoBehaviour, IPointerDownHandler, IBeginDragHandler, IEndDragHandler, IDragHandler
{
    //[SerializeField] private Canvas canvas;
    private RectTransform rect;
    private CanvasGroup canvasgroup;
    private void Awake()
    {
        rect = GetComponent<RectTransform>();
        canvasgroup = GetComponent<CanvasGroup>();
    }
    public void OnBeginDrag(PointerEventData eventData)
    {
        Debug.Log("On begin drag");
        canvasgroup.alpha = .6f;
        canvasgroup.blocksRaycasts = false;
    }

    public void OnDrag(PointerEventData eventData)
    {
        Debug.Log("On drag");
        rect.anchoredPosition += eventData.delta;
    }

    public void OnEndDrag(PointerEventData eventData)
    {
        Debug.Log("On end drag");
        canvasgroup.alpha = 1f;
        canvasgroup.blocksRaycasts = true;
    }

    public void OnPointerDown(PointerEventData eventData)
    {
        Debug.Log("On pointer down");
    }
}

В функции перетаскивания у меня есть список для размещения элементов, которые я перетаскиваю в сетку. Мне также нужно это, чтобы знать порядок элементов в сетке.

public class ItemSlot : MonoBehaviour, IDropHandler 
{
    public string cell = "Vacio";
    public GameObject celText;
    public List<string> droppedItemsList;
    public void OnDrop(PointerEventData eventData) {
        Debug.Log("esto " + eventData.pointerDrag);
        Debug.Log("OnDrop");
        cell = this.transform.name;
        celText.GetComponent<Text>().text = "Elemento en casillero: " + cell;
        string droppedObject = eventData.pointerDrag.name;
        Debug.Log("Dropped " + droppedObject);
        droppedItemsList.Add(droppedObject);
        foreach (string str in droppedItemsList)
        {
            Debug.Log("Items in list " + str);
        }
        /*
        if (eventData.pointerDrag != null) {
            eventData.pointerDrag.GetComponent<RectTransform>().anchoredPosition = GetComponent<RectTransform>().anchoredPosition;
        }*/
    }
}

С этой реализацией я знаю, когда предмет отбрасывается, но есть ли способ узнать, когда предмет был вынут? Мне нужно это, чтобы я мог удалить элемент из списка. Какие-либо предложения? Спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...