如何在Unity中掩盖自定义UI图形?

5
在Unity 2017中,我通过创建继承自UnityEngine.UI.Graphic的UI行为来绘制矢量图形。但是,我的代码并不重要,因为您可以使用文档中的SimpleImage示例同样很好地观察到这个问题。问题在于,这些自定义UI行为派生自Graphic,却不能被Mask组件遮罩,尽管每个本地UI元素都可以。这非常奇怪,因为根据Graphic.OnPopulateMesh文档,TextImageRawImage都使用了这个方法。
复现步骤如下:
  1. 创建一个UI画布。
  2. 创建一个名为“Mask”的UI Image作为UI Canvas的子对象。
  3. 将Mask组件添加到Mask游戏对象。
  4. 添加一个Image和一个SimpleImage作为Mask的子对象。
  5. 观察到Image被遮罩,而SimpleImage没有被遮罩。
对我来说,这是一个问题,因为我需要在滚动视图中使用自定义图形。我该怎么做才能使我的图形像Unity的图形一样可遮罩呢?
1个回答

7
我刚打完这段话就想到了解决方法。它非常简单。你只需从 MaskableGraphic 继承,而不是从 Graphic 继承。

1
有道理。昨天我看到你的问题后,翻了一下文档,但没能弄清楚。关于Mask类并没有说明图形需要是某种特定类型(即MaskableGraphic)! - Draco18s no longer trusts SE
1
谢谢您的评论。让我感到不那么愚蠢,因为我没有早些时候意识到这一点。 - Kyle Delaney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接