Я пытаюсь создать систему инвентаризации для игры, которую разрабатываю.Я использую интерфейс IDropHandler
для обнаружения капель.Я также использую функцию RectTransformUtility.RectangleContainsScreenPoint()
, чтобы увидеть, произошло ли падение в панели пользовательского интерфейса.
public void OnDrop(PointerEventData eventData)
{
RectTransform itemPanel = transform as RectTransform;
if (RectTransformUtility.RectangleContainsScreenPoint(itemPanel,eventData.position))
{
Debug.Log("dropped in box");
AssignItem(dragDropInfo.GetDraggingItem().GetComponent<ItemPanel>().GetItemImage().GetItem());
dragDropInfo.GetDraggingItem().GetComponent<ItemPanel>().GetItemImage().UnassignItem();
}
}
По большей части работает нормально.Однако существует проблема, связанная с иерархией пользовательского интерфейса.Капля принята и все работает как положено.Когда я перетаскиваю его на панель, расположенную выше в иерархии (то есть на тот, который будет отображаться под той, с которой я перетаскиваю), он перестает принимать перетаскивание и действует так, как я ожидал, если бы он выпадал за пределы панели.
Я понятия не имею, почему это так, и буду очень благодарен за любую предоставленную помощь.