我正在尝试创建一种情况,使我可以接受“按住'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");
}
}
我要做的是使用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创建类似于以下效果:
而且,即使您不想这样做,协程仍然是不错的选择。
希望这会有所帮助!