假设我有一个游戏,其中整个屏幕可以与一些UI按钮/元素相互作用(即当触摸发生在用户界面外的任何地方时应该调用全屏触摸处理程序按钮,但不会在UI按钮上发生触摸时调用,因为在UI按钮上发生的触摸应该调用按钮处理程序,而不是屏幕宽度的触摸处理程序)如何处理用户界面元素的全屏触摸交互
什么是阻止触摸事件的最佳方法当触摸发生在用户界面元素上?
我见过多种途径......
- 装上触摸脚本任意游戏物体。在
Update()
功能,检查EventSystem.current.IsPointerOverGameObject(touch.fingerId)
和忽略,如果它不是假
这似乎是最直接的和灵活的,因为Update()
功能可以使用Input
对象直接
- 附加触摸脚本来拉伸图像窗格与0阿尔法在画布的背面,并使用
OnPointerEnter
,OnPointerClick
等来处理触摸事件 - 一些混合1和2或其他方法?
这似乎是在新的GUI系统下推荐的方法,但由于原始Input
值被PointerEventData
屏蔽,所以似乎不太灵活,特别是,处理多点触摸似乎使用此方法很棘手(也使用拉伸隐形图像在画布的背景看起来似乎很难...)
由于这似乎是一件非常常见的事情,所以我想知道这个问题的行业常见做法。
感谢
相关链接:屏幕全触摸它超越了你的问题描述的方法的
http://answers.unity3d.com/questions/784617/how-do-i-block-touch-events-from-propagating-throu.html https://www.youtube.com/watch?v=EVZiv7DLU6E
为什么要防止触摸UI按钮?如果你解释你正在做什么以及为什么应该阻止点击UI按钮,可能会有更好的解决方案。它通常是一个gameobject,人们想阻止,但用户界面组件。 – Programmer
我的意思是,当触摸发生在用户界面按钮上时,不应该调用全屏触摸脚本(因为在用户界面按钮上触及的应该调用它们自己的脚本,而不是全屏触摸脚本)。让我在这个问题上澄清一下 – Woofas