【问题标题】:How to Create a Blocking Mask in Unity using Image Components?如何使用图像组件在 Unity 中创建遮罩?
【发布时间】: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 1Mask Group 2 来阻止点击,但这是不可取的,因为我需要对图像组件进行分组以创建掩码和游戏对象只能接受 1 个图像组件。

我很难想象这会如此艰难。我只需要一个带遮罩的画布来阻止点击进入它后面的画布。

【问题讨论】:

  • 不是您所要求的,但作为替代解决方案,我会:1) 在整个屏幕上创建一个图像叠加层,阻止 一切。 2)(取消)激活您在相同位置已经拥有的按钮的精确副本,并分配完全相同的回调=>只有这个/这些确切的按钮/s是/可点击的。 ;)
  • 谢谢,但我正在寻找更简单的解决方案。我已经尝试过类似您建议的方法,但只是陷入语法困境。我希望避免编写脚本来解决这个问题。
  • 替代方案可能使用CanvasGroups 或简单透明的Image 组件,您只需用这样的图像/CanvasGroup 覆盖每个单独的按钮 => 将Image.raycastTarget/CanvasGroup.blocksRaycast 设置为允许每一步的交互次数

标签: unity3d


【解决方案1】:

感谢 Unity 论坛的帮助,我通过创建一组蒙版并通过脚本中的 RectTransform 的 anchoredPosition 组件定位它们解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2018-05-29
    • 2016-01-07
    • 2022-10-23
    • 1970-01-01
    相关资源
    最近更新 更多