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;
}
答案 0 :(得分:3)
如果您在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;
}
仅触发一次。
{{1}}