我有一个用户界面Button
(using UnityEngine.UI
).
然而,点击Button
似乎是点击浏览到场景中(在我的例子中单击导航网格)。
如何解决这个问题呢?
我一直在使用典型的 Unity3D 代码来让用户投入游戏,例如
if (Input.GetMouseButtonDown(0))
{
如果我尝试这种方法也是一样
if( Input.touches.Length > 0 )
{
if ( Input.touches[0].phase == TouchPhase.Began )
{
iOS、Android 和桌面上似乎都是如此。
这似乎是一个点击UI的基本问题(UnityEngine.UI.Button
等)似乎落入了游戏玩法。
今天在 Unity 中执行此操作的方法如下:
-
自然而然你就会有一个EventSystem
在层次结构中 - 只需检查您是否这样做。 (例如,当您添加画布时,您会自动获得其中之一;通常,Unity 项目中的每个场景都已经有一个EventSystem
,但只需检查您是否有一个。)
-
Add a 物理光线投射器到相机(只需单击一下)
-
Do this:
.
using UnityEngine.EventSystems;
public class Gameplay:MonoBehaviour, IPointerDownHandler {
public void OnPointerDown(PointerEventData eventData) {
Bingo();
}
}
基本上, again 基本上,这就是全部内容。
很简单:这就是在 Unity 中处理触摸的方式。这里的所有都是它的。
添加光线投射器,并获取该代码。
看起来很容易,也很容易。然而,要做好可能很复杂。
(脚注:在 Unity 中进行拖动的一些可怕之处:Unity3D 中 OnPointerDown 与 OnBeginDrag 的对比 https://stackoverflow.com/q/36048106/294884 )
Unity 的触摸技术之旅非常精彩:
-
“早期统一”……非常简单。完全没用。根本没用。
-
“当前的‘新’Unity”......工作得很好。非常简单,但很难以专家的方式使用。
-
“未来的 Unity”……到 2025 年左右,他们将使其既能实际工作,又易于使用。不要屏住呼吸。
(这种情况和Unity的情况没什么不同UI系统。起初,UI 系统很可笑。现在,它很棒,但以专家的方式使用有点复杂。从 2019 年开始,他们将再次彻底改变它。)
(网络是一样的。一开始完全是垃圾。“新”网络相当不错,但有一些非常糟糕的选择。就在最近的 2019 年,他们再次更改了网络。)
方便的相关提示!
记住!当你全屏的时候无形的包含一些按钮的面板。在全屏隐形面板本身上,您必须turn off光线投射!很容易忘记:
作为一个历史性问题:这是“忽略 UI”的粗略且现成的快速修复方法,您可以使用它以前可以用几年前在Unity...
if (Input.GetMouseButtonDown(0)) { // doesn't really work...
if (UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
return;
Bingo();
}
几年来你不能再这样做了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)