如何在 Unity 中屏蔽 UI.RawImage?

How to mask a UI.RawImage in Unity?

在Unity中UI,我有一个普通的RawImage

(只是坐在Panel

我有一个 png,mask.png 它只是透明的白色形状。

如何屏蔽 RawImage?

我试过MaskSpriteMask很多方法,但就是行不通。

即使 RectMask2D 也可以(遮盖成正方形)但它似乎不起作用?

秘诀是什么?

RawImage 组件应该像正常的 Image 组件一样使用遮罩。假设已勾选复选标记 Maskable

请注意,Maskrect Mask 2D 应该是您要屏蔽的(原始)图像的 父级 。层次结构应该是这样的:

Canvas<br>
   | MaskObject (Contains (Raw)Image and Mask or Rect Mask 2d components)
       | Object to mask (Contains the (raw)image to mask)

注意白色方块(图片)是如何被红色方块(蒙版)截断的。

遮罩图像和遮罩图像之间的组件类型也不需要匹配。 RawImage 可以掩盖 Image,反之亦然。 遮罩对象再次显示为红色,其中白色是被遮罩的对象。游戏对象的名称显示该游戏对象使用的(原始)图像组件。

唯一的例外是 SpriteMask,它专门与 Sprite Renderer 组件一起使用

Unity 对遮罩的解释不多...This 最接近解释的是

关于面具的更多信息:
Masks 的工作原理是比较两个(或更多)对象(在本例中为图像)的模板缓冲区的 ref(erence) 值,并使用 Stencil 的 Comp(arison) 函数仅绘制模板缓冲区等于 1 的像素.这意味着可以通过创建一个着色器并实现 Stencil buffer 来创建您自己的蒙版实现,例如,当您想要类似反转蒙版的东西时,这会派上用场,其中除了蒙版所在的地方都绘制像素(在图像中创建孔):)

只需将原始图像作为 UI 图像的子图像,并将父图像称为“蒙版”,然后在“蒙版”图像中放入任何形状的精灵。转到 'add component' 然后 'UI' 然后添加 'mask'。请看这个 link https://learn.unity.com/tutorial/ui-masking#6032b6fdedbc2a06c234cd3e 对我来说效果很好