如何在 Unity 中屏蔽 UI.RawImage?
How to mask a UI.RawImage in Unity?
在Unity中UI,我有一个普通的RawImage
(只是坐在Panel
)
我有一个 png,mask.png 它只是透明的白色形状。
如何屏蔽 RawImage?
我试过Mask
、SpriteMask
很多方法,但就是行不通。
即使 RectMask2D
也可以(遮盖成正方形)但它似乎不起作用?
我应该使用Mask
还是SpriteMask
如果是这样,您是否可能必须/不必在面具上设置 Material?在 RawImage 上?
我假设 Mask 游戏对象应该是 RawImage 的父对象,但是??
秘诀是什么?
RawImage
组件应该像正常的 Image
组件一样使用遮罩。假设已勾选复选标记 Maskable
。
请注意,Mask
或 rect 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 对我来说效果很好
在Unity中UI,我有一个普通的RawImage
(只是坐在Panel
)
我有一个 png,mask.png 它只是透明的白色形状。
如何屏蔽 RawImage?
我试过Mask
、SpriteMask
很多方法,但就是行不通。
即使 RectMask2D
也可以(遮盖成正方形)但它似乎不起作用?
我应该使用
Mask
还是SpriteMask
如果是这样,您是否可能必须/不必在面具上设置 Material?在 RawImage 上?
我假设 Mask 游戏对象应该是 RawImage 的父对象,但是??
秘诀是什么?
RawImage
组件应该像正常的 Image
组件一样使用遮罩。假设已勾选复选标记 Maskable
。
请注意,Mask
或 rect 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 对我来说效果很好