如何将按钮保持作为Unity C#中的输入

问题描述 投票:-3回答:1

我正在尝试创建一种情况,使我可以接受“按住'E'进行交互”类型的输入。我的第一个想法是,在按住按钮后启动计时器。计时器达到700毫秒后,请采取措施。但是问题是,因为我是这种语言的新手,所以我不知道如何用c#编写代码。任何其他方法也将受到赞赏。

我在这里添加伪代码

//pseudocode
//inside the update function

if (e is pressed)
{
   start timer;
   if (timer.time == 700)
   {
      Debug.Log("E is pressed for quite some time");
   }
}
c# unity3d time
1个回答
1
投票

我要做的是使用coroutine

[当用户按下按钮时,协程将启动,如果用户停止按下按钮,则协程将停止。

为此,您的代码可能类似于:

using System.Collections;

[SerializeField] int time;

void Update ()
{
    if (Input.GetKeyDown(KeyCode.E)) StartCoroutine(Action());
    if (Input.GetKeyUp(KeyCode.E)) StopCoroutine(Action());
}

IEnumerator Action ()
{
    yield return new WaitForSeconds(time);

    // do stuff
}

感谢derHugo在示例代码中发现错误-现在已对其进行编辑。

当然,还有其他方法可以执行您的操作,但是我认为协程是您的最佳选择,因为当用户按住时,协程将非常容易向用户添加一些反馈。情况为“ E”。例如,您可以fill an image创建类似于以下效果:

Example Image

而且,即使您不想这样做,协程仍然是不错的选择。

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.