【发布时间】:2021-02-19 05:50:47
【问题描述】:
我正在为 Unity 游戏设计教程,但遇到了一个看似微不足道的问题。对于教程中的每一步,我都会通过隐藏屏幕上的所有内容来指导用户,除了他们需要按下的按钮。我的游戏层次结构是这样的。
Button Canvas
Select_Me_Button
Dont_Select_Me_Button
Tutorial Canvas
Mask Group 1
Left Border Mask
Right Border Mask
Up Border Mask
Down Border Mask
Mask Group 2 ...
TutorialCanvas GameObject 有一个 Canvas 组件,其排序顺序高于ButtonCanvas。我为 TutorialCanvas 添加了 GraphicRaycaster 组件,其中 Blocking Mask 设置为所有内容,Blocking Objects 设置为 None。但是,即使 TutorialCanvas 在 Button Canvas 上呈现,我仍然可以单击不应单击的蒙版和触发按钮。我可以通过将用作掩码的图像组件添加到属于TutorialCanvas 的父对象Mask Group 1 和Mask Group 2 来阻止点击,但这是不可取的,因为我需要对图像组件进行分组以创建掩码和游戏对象只能接受 1 个图像组件。
我很难想象这会如此艰难。我只需要一个带遮罩的画布来阻止点击进入它后面的画布。
【问题讨论】:
-
不是您所要求的,但作为替代解决方案,我会:1) 在整个屏幕上创建一个图像叠加层,阻止 一切。 2)(取消)激活您在相同位置已经拥有的按钮的精确副本,并分配完全相同的回调=>只有这个/这些确切的按钮/s是/可点击的。 ;)
-
谢谢,但我正在寻找更简单的解决方案。我已经尝试过类似您建议的方法,但只是陷入语法困境。我希望避免编写脚本来解决这个问题。
-
替代方案可能使用
CanvasGroups或简单透明的Image组件,您只需用这样的图像/CanvasGroup 覆盖每个单独的按钮 => 将Image.raycastTarget/CanvasGroup.blocksRaycast设置为允许每一步的交互次数
标签: unity3d