Unity3D: определить, щелкнула ли мышь элемент пользовательского интерфейса? - PullRequest
0 голосов
/ 19 июня 2020

Это довольно простой вопрос, но похоже, что что-то изменилось в Unity, в последних версиях ответы, которые я нашел на inte rnet, больше не действительны, поэтому здесь ничего не происходит:

I получил некоторые элементы пользовательского интерфейса и класс «InputController», который предназначен для обработки пользовательского ввода во время игры (ввод на контроллерах обрабатывается посредством событий onclick).

Я ищу способ чтобы иметь возможность узнать, щелкает ли мышь элемент пользовательского интерфейса, чтобы заблокировать выполнение моей обработки ввода (и избежать того, чтобы пользователь нажимал «паузу», в то время как игра также выполняет «нажатие левой кнопки».

Теперь, большинство решений, которые мне нравились, были немного беспорядочными или использовали EventSystem.current.IsPointerOverGameObject () (например, этот , который был показан при написании этого вопроса), который в 2019.4 больше не появляется. Итак, есть какой-либо новый способ сделать это, мне нужно сделать какое-то хакерское решение для получения события из пользовательского интерфейса, а затем заблокировать выполнение моего кода или мне не хватает что-то здесь?

1 Ответ

1 голос
/ 19 июня 2020

Вам следует изучить такие интерфейсы, как IPointerEnterHandler и IPointerExitHandler. Если вы реализуете эти интерфейсы для своих элементов пользовательского интерфейса, вы можете добавить необходимый код в методы OnPointerEnter и OnPointerExit, которые требуются для этих интерфейсов.

Это должно быть так же просто, как добавление bool в ваш InputController, например isInputEnabled и обрабатывать ввод только тогда, когда это правда. Установите значение false OnPointerEnter и true OnPointerExit.

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