Unity UI组件遮挡射线解决方法
在Unity中,有时会用到悬停显示的功能,显示的UI在鼠标下方会遮挡射线,导致脚本一直在切换OnPointerEnter和OnPointerExit两种状态,从而一直闪烁。
解决方法:为了让 infoShow 不遮挡射线,可以将其 CanvasGroup 组件的 interactable 和 blocksRaycasts 属性设置为 false。这样,infoShow 将不再拦截射线,但仍然可以在屏幕上显示。
如果 infoShow 上没有 CanvasGroup,你可以动态添加它并修改这些属性,或者直接修改 GameObject 的 RaycastTarget。
// 设置 infoShow 为不可交互,且不阻挡射线
if (infoShowCanvasGroup != null)
{
infoShowCanvasGroup.blocksRaycasts = false;
infoShowCanvasGroup.interactable = false;
}