GetKeyDown行为怪异,Unity,C#
本文关键字:Unity GetKeyDown | 更新日期: 2023-09-27 18:01:01
我在Unity中的GetKeyDown有问题。即使日志似乎在每次按下按钮时都能检测到,但它并不总是执行代码。快速按下按钮时似乎会发生更多情况。我想要的是减少"计数"直到零,然后在x秒后重新填充到其初始值。
int counting = 5;
void Update(){
if(Input.GetKeyDown(KeyCode.O) && counting > 0){
counting --;
}
else if(counting <= 0)
{
Invoke ("ResetCounting",3);
}
print (counting);
}
void ResetCounting ()
{
counting = 5;
}
如果在counting
已经是0
的情况下继续敲击该键,则会多次触发ResetCounting()
。当counting
被重置为5
时,队列中仍然有一些对ResetCounting()
的调用,并且将重置counting
,同时它仍然大于0
。
您需要添加一个检查,以确保ResetCounting()
只触发一次。
int counting = 5;
bool invokedReset = false;
void Update(){
if(Input.GetKeyDown(KeyCode.O) && counting > 0){
counting --;
}
else if(counting <= 0 && !invokedReset)
{
Invoke ("ResetCounting",3);
invokedReset = true;
}
print (counting);
}
void ResetCounting ()
{
counting = 5;
invokedReset = false;
}