什么是最优雅的在Unity 5中让UI对象吞噬触摸事件的方法?

4
我的游戏使用Unity 5的新UI系统和画布。游戏本身可以通过几个带有2D碰撞器的游戏对象上的OnMouseDown()函数接收触摸以发射弹药,并且我可以通过改变游戏对象的position.z来调整不同可触摸区域的优先级。
然而,添加了UI后,任何对UI元素(按钮、面板等)的触摸不仅会触发UI元素(如果可能),而且还可以穿过UI元素并触发可触摸区域。当你按下一个按钮时,不仅按钮被按下,而且还会触发在“UI层”后面的射击动作(视觉上)。
我可以想到一种方法是向UI元素添加碰撞器,然后在运行时将其位置和大小更改为世界空间,并调整其position.z值以吞噬所有位于UI上的触摸。但是这似乎非常丑陋和不安全。
有没有一种优雅的方式让所有UI元素(基本上是面板)吞噬触摸?谢谢!

这是互联网上的亿万次复制品。只需搜索,您就可以节省大量时间。这是Unity中最基本、最常见的问题。http://answers.unity3d.com/questions/784617/how-do-i-block-touch-events-from-propagating-throu.html - Fattie
可能是在Unity中注册UI触摸的重复问题。 - Fattie
@Joe Blow 非常感谢您提供的非常有用的链接!在提出问题之前,我进行了一些研究,但未能找到最新和有用的信息。可能是因为我的英语不好,或者我的搜索技巧不好。也许两者都是 XD - ArtS
1个回答

1
您可以在相机上使用2D或3D物理光线投射器来完成此操作。BoredMormon有一个很棒的5分钟视频,介绍如何做到这一点,我建议您去看看!https://www.youtube.com/watch?v=EVZiv7DLU6E

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