Разрешение щелчка или raycast только определенным элементам одновременно

Это трудно объяснить, поэтому я стараюсь сделать все возможное, используя следующее изображение.

Введите описание изображения здесь

Так что дело обстоит так: игрок выбрал дрель из инвентаря и «меню подтверждения» (A, S & D) выскочил. Теперь игрок должен выбрать одно из этих действий (A = принять позицию, S = положить предмет обратно в инвентарь, D = продолжать перемещать объект). Прежде чем игрок выберет одно из этих действий, он не должен быть в состоянии сделать ничего другого.

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

К вопросу: Есть ли у Unity какой-то метод, чтобы «предотвратить любой вид обнаружения щелчка для любых других объектов, но эти» или «если мышь не над этим объектом ничего не делать при нажатии»? Вероятно, нет ничего подобного, так что было бы лучшим обходным путем?

Поскольку эти действия» Нажмите, чтобы сделать что-то» запускаются из различных мест с различными стилями (кнопки и raycasts в десятках различных сценариев), я стараюсь избегать этого, устанавливая логические значения везде. Открытые идеи более чем приветствуются.

1 ответ

  1. Легкий обходной путь смог быть через использование глубины GUI ( https://docs.unity3d.com/ScriptReference/GUI-depth.html ).

    Если» меню подтверждения » guiDepth находится сверху, а все другие GUI находятся ниже, вы можете добавить другой GUI между охватом всего экрана; Raycast вернет первый элемент, и если это средний GUI, просто ничего не делайте.