Pro*_*ton -1 c# time unity-game-engine
我正在尝试创建一种可以采用“按住“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");
}
}
Run Code Online (Sandbox Code Playgroud)
我要做的是使用协程。
当用户按下按钮时,协程将启动,如果用户停止按下按钮,协程将停止。
为此,您的代码可能类似于:
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
}
Run Code Online (Sandbox Code Playgroud)
感谢 derHugo 在我的示例代码中发现了错误 - 现在已对其进行了编辑。
当然,还有其他方法可以完成您想做的事情,但我认为协程是您最好的选择,因为当用户按住时,在您的情况下,向用户添加一些反馈将非常容易, 'E'。例如,您可以填充图像以创建与此类似的效果:
而且,即使您不想这样做 - 协程仍然是一个不错的选择。
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
15669 次 |
| 最近记录: |