Всплывающее окно / панель не блокирует Raycast для кнопок / пользовательского интерфейса ниже - PullRequest
2 голосов
/ 18 февраля 2020

Я пытаюсь создать всплывающее окно, которое будет накладываться поверх текущего холста и блокировать все взаимодействия с ним. Все, что я читаю, говорит об использовании Canvas Group (s) и / или Graphi c Raycaster, но я не могу найти комбинацию magi c, чтобы заставить это работать.

Canvas O - экранное пространство наложение для типичных кнопок. Canvas K - это холст World-Space для моего текущего пользовательского интерфейса, который я могу перемещать и еще много чего. Canvas P - это мое всплывающее окно, которое также является оверлеем, и я хочу заблокировать все взаимодействие с O и K «позади» него. Я поместил группу Canvas на все 3, я поставил Graphi c Raycaster на P, я выбрал «Blocks Raycasts» в группе Canvas P, а также установил «Блокирование объектов» и «Блокирование». Маска "Всем и Всем". Я надел коллайдеры и сделал разные заказы на сортировку слоев. У меня нет идей. Почему он не блокирует ??

1 Ответ

0 голосов
/ 18 февраля 2020

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

Вот так:

  • Canvas
    • Text1
    • Text2 (рисуется после Text1)
    • OverlayImage (рисуется после Text1 и Text2, блокирует Raycast)

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

Я не уверен, что один холст блокирует события на других холстах сцены, но я бы хотел добавьте OverlayImages на все холсты и проверьте, включены ли OverlayImages на холсте P. в вашем примере.

...