Как я могу запретить определенным объектам получать raycast? - PullRequest
0 голосов
/ 08 февраля 2020

Я использую следующий код для выполнения raycast и определения объектов GameObject, которые попали:

var eventDataCurrentPosition = new PointerEventData(EventSystem.current);
eventDataCurrentPosition.position = screenPosition;
var results = new List<RaycastResult>();
EventSystem.current.RaycastAll(eventDataCurrentPosition, results);

Однако я хочу, чтобы EventSystem.current.RaycastAll ударил только определенные объекты. Есть ли способ разрешить лучевой трансляции только определенным GameObjects?

Ответы [ 2 ]

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

Два способа, одним из которых вы можете разделить каждую категорию пользовательского интерфейса на разные Canvases и raycast из разных компонентов graphicRaycaster при каждом изменении ваших потребностей.

Или, я думаю, что graphicRaycaster и EventSystem.current.RaycastAl оба возвращают массив из всех объектов пользовательского интерфейса, так почему бы не отфильтровать вручную по сценарию на основе их тегов или около того.

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

Вы можете попробовать добавить компонент CanvasGroup в элементы пользовательского интерфейса, которые вы не хотите использовать в raycast. CanvasGroup имеет опцию «блокировать рейкасты». Просто установите его в false, и он должен сделать эту работу.

...