如何在 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
文档观察到这个问题,Text
、Image
和 RawImage
都使用相同的方法。
重现:
- 创建 UI Canvas.
- 创建一个名为 Mask 的 UI 图像作为 UI Canvas 的子图像。
- 将 Mask 组件添加到 Mask 游戏对象。
- 添加一个 Image 和一个 SimpleImage 作为 Mask 的子项。
- 观察到 Image 被屏蔽了,而 SimpleImage 没有。
这对我来说是个问题,因为我需要在滚动视图中使用自定义图形。如何使我的图形与 Unity 的图形一样可屏蔽?
我在输入完后就想通了。这太容易了。您所要做的就是继承 MaskableGraphic
而不是 Graphic
.
在 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
文档观察到这个问题,Text
、Image
和 RawImage
都使用相同的方法。
重现:
- 创建 UI Canvas.
- 创建一个名为 Mask 的 UI 图像作为 UI Canvas 的子图像。
- 将 Mask 组件添加到 Mask 游戏对象。
- 添加一个 Image 和一个 SimpleImage 作为 Mask 的子项。
- 观察到 Image 被屏蔽了,而 SimpleImage 没有。
这对我来说是个问题,因为我需要在滚动视图中使用自定义图形。如何使我的图形与 Unity 的图形一样可屏蔽?
我在输入完后就想通了。这太容易了。您所要做的就是继承 MaskableGraphic
而不是 Graphic
.