如何在 Unity 中屏蔽自定义 UI 图形?

Kyl*_*ney 4 c# graphics mask unity-game-engine unity-components

在 Unity 2017 中,我通过创建自己的 UI 行为来绘制矢量图形,这些行为从UnityEngine.UI.Graphic. 但是我的代码无关紧要,因为您也可以使用文档中的SimpleImage 示例来观察这个问题。问题是这些从 Graphic 派生的自定义 UI 行为无法被Mask 组件屏蔽,即使每个本机 UI 元素都可以。这很奇怪,因为根据Graphic.OnPopulateMesh文档TextImage、 和RawImage都使用相同的方法。

重现:

  1. 创建一个 UI 画布。
  2. 创建一个名为 Mask 的 UI Image 作为 UI Canvas 的子项。
  3. 将 Mask 组件添加到 Mask 游戏对象。
  4. 添加一个 Image 和一个 SimpleImage 作为 Mask 的子项。
  5. 观察到 Image 被屏蔽,而 SimpleImage 没有。

这对我来说是个问题,因为我需要在滚动视图中使用自定义图形。我该怎么做才能使我的图形与 Unity 的图形一样可屏蔽?

Kyl*_*ney 5

当我完成输入时,我想到了这一点。这很容易。你所要做的就是从而MaskableGraphic不是继承Graphic