繁体   English   中英

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

[英]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 具有“阻止光线投射”选项。 只需将其设置为 false 即可完成工作。

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

或者,我认为 graphicsRaycaster 和 EventSystem.current.RaycastAl 都返回所有命中的 UI 对象的数组,那么为什么不根据它们的标签左右通过脚本手动过滤掉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM