Unity IsPointerOverGameObject возвращается непоследовательно - PullRequest
1 голос
/ 23 марта 2019

Я заметил, что щелчки мышью на моем пользовательском интерфейсе также вызывают Unity OnMouseDown и подобные события, если за ними находятся объекты мирового пространства.

Исследования привели меня к EventSystems.current.IsPointerOverGameObject(), что документы Unity не очень хорошо объясняют.

Согласно объяснениям, он должен возвращать true , когда указатель находится над объектом пользовательского интерфейса , но это не мой опыт.

При использовании он возвращает false при использовании одного Collider2D, true при использовании другого объекта и true при использовании объекта пользовательского интерфейса.

Я не понимаю, какую логику он использует, чтобы определить, когда показывать true против false. Он плохо назван, потому что все является «GameObject».

Если я могу выяснить, что является причиной неправильной информации, я могу это исправить.

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

Редактировать: Похоже, что EventSystem.current.currentSelectedGameObject != null является более ценным показателем. Это значение имеет фактический объект пользовательского интерфейса, когда происходит щелчок, но не для объектов без пользовательского интерфейса. Это полезно только в OnMouseDown и OnMouseDrag, поскольку его значение существует только при нажатии.

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