Unity 5 UI遮罩问题 Android

3
我在使用Unity 5 / Android时遇到了掩蔽功能问题。在4.6版本中,掩蔽正常工作。但是,在Unity 5中,我根本无法让它工作。
如果有人能够解决此问题,请参考以下两个图片,一个显示了应该的样子,另一个则显示了实际效果。请问我需要特定的Android设置吗?我目前正在尝试使用空白项目来解决此问题,因此目前没有任何代码,只有场景。 This is how it SHOULD look This is how it DOES look
3个回答

4
我在寻找答案很长时间后,通过取消Unity 5中的“禁用深度和模板”的选框来解决了这个问题。
构建设置 -> 玩家设置 -> 分辨率和呈现 -> 禁用深度和模板
然后,您需要重新启动Unity(如果不重新启动,则无法看到工作遮罩)。

1
对我来说,它已经取消选中了,但我仍然面临着同样的问题。 - Waqar Ahmed
你需要重新启动Unity。 - Iggy
这很有道理。Unity的文档说:
遮罩是使用GPU的模板缓冲区实现的。
- CasualCoder

0

对我来说完美无缺。

请在空白场景上操作。

添加UI图像。-> 将自动创建画布。

对于图像->添加组件。“遮罩”。

现在,在你制作的图像GameObject上,添加另一个图像。将其命名为Image2。

这样你就有了如下结构:

画布->图像->Image2。

现在进入具有Mask组件的图像。并在Mask组件上关闭“显示蒙版图形”<-重要。

现在针对Image 2。尝试更改背景主题,同时在GAME窗口中查看对象移动情况。


感谢您的回复,@Aizen。您在设备上运行了吗?您建议我做的正是我所做的,只是我有三层图像(边框、掩模、插入)。我发布的图片来自编辑器(它的工作正常),以及来自物理设备(它不起作用)。 - user3318682
嗯,这可能是Tegra Note的问题,因为我现在已经在模拟器(Genymotion Nexus 5)和Xperia Z3(Sony远程测试实验室)中进行了测试,它们都正确地屏蔽了。 - user3318682
是的,我已经对我所有的设备使用了这种遮罩,它可以正常工作。不过我没有Tegra。我们以前有两种遮罩组件,但是现在在Unity 5中我只能看到一个Mask<-,所以我想他们把另一个遮罩组件取消了,同时他们也改变了Rect Transform的属性:PosX和PosY改为Left和Right。现在这些是只读属性,只能通过SetPos()进行覆盖。但是在Unity5中不起作用,但在4.6中可以正常工作。好在我还有4.6版本,你可能想尝试一下4.6版本的遮罩功能,并检查是否是更新使得遮罩在你的设备上无法工作。 - Aizen
嗨,@Aizen,我又来了。是的,在4.6中遮罩功能正常(我在同一台机器上安装了4.6和5.0,尝试将我的项目升级到版本5)。我认为这是Tegra 4的问题(我已经报告了这个bug),因为如果我使用模拟器(Genymotion Nexus 5或Sony远程实验室Xperia Z3),遮罩功能就可以正常工作。这真的很烦人,因为有些我想要从版本5中使用的功能,但在他们解决这个遮罩问题之前,我无法使用。感谢您抽出时间来查看并尝试帮助解决此问题。 - user3318682
在我的Xperia Z3上它对我不起作用,我还在Nexus 4和Nexus 7上测试过。我无法使掩模在Unity5中对(至少)这些Android设备起作用。我必须说,在其他平台(编辑器、iOS和Web)上它完美地运行。 - FranMowinckel
更多数据:在Unity 5.1.2中,我们发现遮罩在各种Android设备上(包括Nexus 7)都能正常工作,但在运行Android 4.4.2的Nabi Dream Tab上根本无法工作。 - orion elenzil

0

这是一个晚回答。然而,为了回答OP所问的问题,我想说使用RectMask2D代替常规的Mask可能是一个不错的解决方法。

我还提供了另一个答案,其中包含一些显示更多细节的图像。

RectMask2D控件:

对于RectMask2D的常见用途是显示较大区域的小部分,并以某种方式为此区域加框。

RectMask2D控件的局限性是:

  • 它仅在2D空间中工作
  • 它无法正确地遮盖非共面元素

RectMask2D的优点是:

  • 它不使用模板缓冲区
  • 没有额外的绘制呼叫
  • 没有材料变化
  • 快速性能

参考资料


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