GetKeyDown表现得很奇怪,Unity,C#

时间:2014-05-01 12:19:49

标签: c# unity3d

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;
}

1 个答案:

答案 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}}