gpt4 book ai didi

c# - 我如何在 Unity3D 中进行触摸操作?

转载 作者:太空宇宙 更新时间:2023-11-03 12:30:21 28 4
gpt4 key购买 nike

我正在使用 Unity3D 制作一个 Android 应用程序,它已经可以用于点击检测,但不能用于触摸。我需要触摸来进行多点触控检测。

我想要什么:我有我的播放器和 2 张箭头图像。一个箭头指向右,一个指向左。当我触摸左箭头时,玩家应该开始向左移动,当我触摸右箭头时,玩家应该开始向右移动。

但是我如何检测哪个箭头被触摸(并按住)?我在 Google 上找到的所有代码都太旧了,不能再工作了。

我正在使用 C# 脚本,这是一款 2D 游戏。

最佳答案

Klausar,你要找的是…………

一个按钮(!!!)

就这么简单!

  1. 点击“添加 Canvas ”。 (您很可能想要“缩放至屏幕大小”- 选择该选项。)

  2. 点击“添加按钮”。

  3. 没有“三”..去喝酒。

在您的代码中,为右侧按钮设置这样的例程

public void UserClickedRight()
{
Debug.Log("click right whoo!");
}

左侧按钮也有类似的例程。

1。在编辑器中转到您的 Button

2。只需将脚本拖到它并选择 UserClickedRight !!

您实际上不必从头开始对按钮进行编程:)

这是 Unity 的基 native 制 - 将游戏对象拖到编辑器中的“插槽”中。

(您拖动的游戏对象上有相关脚本。)

您无需达到触摸处理级别即可实现按钮!


现在你问,“按住按钮时”怎么样?

这很容易,您只需要了解一些有关 Unity“事件”系统的知识。

Button 中,Unity 已经完成了“OnClick”的所有工作:

enter image description here

由于“点击”很常见,为了方便起见,他们将其放在检查器面板中。

好消息是 Button更多您可以使用的事件

http://docs.unity3d.com/ScriptReference/UI.Button.html

我猜你想在你的案例中使用 OnPointerDownOnPointerUp

要使用其他事件(Unity 没有费心放在 Inspector 面板中)非常简单,您只需

1、制作一个脚本,引用你想要的事件,

和,

2,你把那个脚本放在有问题的按钮上......

就这么简单。

一步一步的解释:

您将使用 Unity 的事件系统,因此:

  using UnityEngine.EventSystems;

下一步。你知道脚本通常是这样开始的......

 public class FancyButton:MonoBehaviour

“MonoBehaviour”部分只是意味着它是一个将“驱动游戏对象”的 c# 脚本。

在这种情况下,我们必须进一步提醒引擎您将使用这些点击事件。所以你添加这个。

,IPointerDownHandler,IPointerUpHandler

到此为止

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;

public class FancyButton:MonoBehaviour,IPointerDownHandler,IPointerUpHandler
{

现在是简单的部分。

您只需键入 Unity 将为您运行的两个例程,当这些事情发生时。

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;

public class FancyButton:MonoBehaviour,IPointerDownHandler,IPointerUpHandler
{
public void OnPointerDown(PointerEventData data)
{
Debug.Log("holy! someone put the pointer down!")
}

public void OnPointerUp(PointerEventData data)
{
Debug.Log("whoa! someone let go!")
}
}

现在您所要做的就是将该脚本放到按钮上。完成!

您可以将该脚本放在您需要该功能的任何按钮上。

接下来,点击 Obi-wan 看看我们目前所处的位置!

enter image description here

最后,听起来您想“在按住按钮时”做点什么。这只是一个一般的编程问题 - 你有一个 bool 值,当按钮上升和下降时它会打开和关闭。让我们开始吧。

    using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;

public class FancyButton:MonoBehaviour,IPointerDownHandler,IPointerUpHandler
{
[System.NonSerialized] public bool mouseIsDownRightNow;

public void OnPointerDown(PointerEventData data)
{
mouseIsDownRightNow = true;
}

public void OnPointerUp(PointerEventData data)
{
mouseIsDownRightNow = false;
}
}

您可以从另一个脚本或您想要的任何内容访问该变量。

如果您想在按钮按下时运行例程,请添加以下内容:

    void Update()
{
if (buttonIsDownRightNow) WhileButtonIsDown();
}
private void WhileButtonIsDown()
{
Debug.Log("THE BUTTON IS DOWN! WHOA!");
}

尝试一下,并在按住按钮时观察控制台。

这是一个在按下按钮时不断增加值的示例:

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;

public class FancyButton:MonoBehaviour,IPointerDownHandler,IPointerUpHandler
{
[System.NonSerialized] public bool buttonIsDownRightNow;
private int countSomething;

public void OnPointerDown(PointerEventData data)
{
buttonIsDownRightNow = true;
}

public void OnPointerUp(PointerEventData data)
{
buttonIsDownRightNow = false;
}

private void WhileButtonIsDown()
{
++countSomething;
}

void Update()
{
if (buttonIsDownRightNow) WhileButtonIsDown();

Debug.Log("value is now " +countSomething.ToString());
}
}

这就是它的全部。一旦您真正理解了 Unity 中的事件,就没有太多需要了解的内容了。

唯一的其他重要主题是 Mecanim、着色器编写、触摸、协程、线程、PhysX、原生插件、 Sprite 、网络、动态网格、导航、VR、AR、动画、逆运动学、粒子、地形、IAP、照明、烘焙、阴影、MMP、角色 Controller 和音频。享受吧!

关于c# - 我如何在 Unity3D 中进行触摸操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36042653/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com