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

How do I mask a custom UI Graphic in Unity?

在 Unity 2017 中,我通过创建自己的 UI 继承自 UnityEngine.UI.Graphic 的行为来绘制矢量图形。但我的代码是无关紧要的,因为你可以使用 SimpleImage example from the documentation. The problem is that these custom UI behaviors that derive from Graphic can't be masked by a Mask component, even though every native UI element can be. This is very strange because according to the Graphic.OnPopulateMesh 文档观察到这个问题,TextImageRawImage 都使用相同的方法。

重现:

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

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

我在输入完后就想通了。这太容易了。您所要做的就是继承 MaskableGraphic 而不是 Graphic.