Проблема с обнаружением падения внутри панели интерфейса в Unity - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь создать систему инвентаризации для игры, которую разрабатываю.Я использую интерфейс 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();
     }
}

По большей части работает нормально.Однако существует проблема, связанная с иерархией пользовательского интерфейса.Капля принята и все работает как положено.Когда я перетаскиваю его на панель, расположенную выше в иерархии (то есть на тот, который будет отображаться под той, с которой я перетаскиваю), он перестает принимать перетаскивание и действует так, как я ожидал, если бы он выпадал за пределы панели.

Я понятия не имею, почему это так, и буду очень благодарен за любую предоставленную помощь.

1 Ответ

0 голосов
/ 02 октября 2018

Элементы пользовательского интерфейса имеют свойство Raycast Target, которое вы можете попытаться отключить для элементов, которые не являются взаимодействующими.

Если это не сработает, вы также можете попробовать изменить его динамически в зависимости от того, что у вас есть в данный момент.перетаскивание.

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