关于UGUI不拦截射线的方法

Posted 夜黔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于UGUI不拦截射线的方法相关的知识,希望对你有一定的参考价值。

起因:开发游戏,要在设置界面里给一个设置项添加一个东西解释这个项是干啥的,要求鼠标移到文字上的时候显示一个弹窗差不多的东西,见动图,鼠标移开会消失。但是当我移动鼠标到弹窗上的时候,UGUI会发射一根射线,击到弹窗上而不是文字上,判定为离开文字,于是隐藏弹窗,然后判断进入文字,显示弹窗,如此反复,不是我所希望的。。如果这个弹窗不会遮挡射线就不会出现这个问题。

技术分享图片

 

解决方法有两个,一个是写代码,如下:

1 bool ICanvasRaycastFilter.IsRaycastLocationValid(Vector2 sp, Camera eventCamera)
2 {
3     return false;
4 }

实现 ICanvasRaycasttFilter 接口,返回 false 则这个物体将不会被射线击中

 

还有有个方法是给这个物体加一个组件 :CanvasGroup

技术分享图片

关闭 Interactable 和 Blocks Raycasts 则他会让他和他的子物体全部都不接收射线

Ignore ParentGroups 勾选的话,他会无视父物体的 CanvasGroup 的设置。

 

结果如图

技术分享图片

以上是关于关于UGUI不拦截射线的方法的主要内容,如果未能解决你的问题,请参考以下文章

UGUI射线检测

[UnityUI]UGUI射线检测

UGUI UI层阻挡射线

Unity界面UGUI遮挡的问题

关于Unity中鼠标选取物体的解决方案

UGUI Raycaster