【问题标题】:Pop-Up Canvas/Panel Not Blocking Raycast to Buttons/UI Below弹出式画布/面板不阻止 Raycast 到下面的按钮/UI
【发布时间】:2020-06-02 12:35:02
【问题描述】:

我正在尝试创建一个弹出窗口,该窗口将覆盖在当前画布之上并阻止与它的所有交互。我读到的所有内容都说要使用 Canvas Group(s) 和/或 Graphic Raycaster,但我找不到使这项工作发挥作用的神奇组合。

Canvas O 是典型按钮的屏幕空间覆盖。 Canvas K 是我当前的 UI 内容的世界空间画布,我可以平移等等。 Canvas P 是我的弹出窗口,它也是一个叠加层,我想阻止它与“后面”的 O 和 K 的所有交互。我在所有 3 个上都放了一个 Canvas 组,我在 P 上放了一个 Graphic Raycaster,我在 P 的 Canvas Group 中选择了“Blocks Raycasts”,并将“Blocking Objects”和“Blocking Mask”设置为一切和一切。我已经安装了对撞机,并且我已经为画布设置了不同的排序顺序以进行分层。我没主意了。为什么不屏蔽??

【问题讨论】:

  • 你试过玩图层吗?
  • 我刚刚尝试将其更改为第 10 层:叠加。没有做任何不同的事情:-\

标签: unity3d user-interface raycasting


【解决方案1】:

画布 UI 对象按降序绘制(因此检查器中画布下方最低的对象最后绘制并位于其他所有对象的前面)。

像这样:

  • 帆布
    • 文字1
    • Text2(在Text1之后绘制)
    • OverlayImage(在 Text1 和 Text2 之后绘制,阻挡光线投射)

如果您将图像 UI 对象添加到画布,请将其拖到检查器中该画布下方的最低对象,如上例所示,然后将其展开以占据整个画布,并设置锚点 (控制调整大小)根据窗口的宽度和高度进行扩展,该图像应始终覆盖整个画布。只要它保持为检查器层次结构中最低的游戏对象,它就应该阻止该画布上的事件。

我不确定场景中其他画布上的某个画布是否会阻塞事件,但我会在所有画布上添加 OverlayImages,并在您的示例中控制是否从画布 P 启用或禁用 OverlayImages。

【讨论】:

  • 所以答案可能是不能让一个 Canvas 阻止另一个?现在我只是做了一个解决方法,在弹出窗口打开时停用其他画布。不过有点烦人!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-21
  • 1970-01-01
  • 2016-09-09
相关资源
最近更新 更多