Я работаю в проекте единства. Здесь у меня есть игровой объект с группой макетов сетки. У меня также есть элементы, которые мне нужно поместить в эту группу макетов. Для этого я реализовал функцию перетаскивания: Например,
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;
}*/
}
}
С этой реализацией я знаю, когда предмет отбрасывается, но есть ли способ узнать, когда предмет был вынут? Мне нужно это, чтобы я мог удалить элемент из списка. Какие-либо предложения? Спасибо за помощь