如何防止某些对象接收光线投射?

How do I prevent certain objects from receiving the raycast?

我正在使用以下代码执行光线投射并检测被击中的游戏对象:

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

但是,我只希望 EventSystem.current.RaycastAll 击中某些物体。有没有办法只允许某些游戏对象接收光线投射?

您可以尝试将 CanvasGroup 组件添加到您不想用光线投射击中的 UI 元素。 CanvasGroup 有选项 "block raycasts"。只需将其设置为 false 即可。

两种方法,一种是您可以在每次需要更改时将每个 UI 类别分离到不同的画布和来自不同 graphicRaycaster 组件的光线投射。

或者,我认为 graphicRaycaster 和 EventSystem.current.RaycastAl 都是 return 所有 UI 对象的数组,那么为什么不根据它们的标签通过脚本手动过滤掉呢? .