GetKeyDown行为奇怪,Unity,C#

GetKeyDown行为奇怪,Unity,C#,c#,unity3d,C#,Unity3d,我对Unity中的GetKeyDown有一个问题。即使每次按下按钮时日志似乎都会检测到,但它并不总是执行代码。当快速点击按钮时,似乎会发生更多的情况。我想要的是将“计数”减少到零,然后在x秒后重新填充到其初始值 int counting = 5; void Update(){ if(Input.GetKeyDown(KeyCode.O) && counting > 0){ counting --; } else if(counti

我对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;
}
int计数=5;
无效更新(){
if(Input.GetKeyDown(KeyCode.O)和&counting>0){
计数--;
}

否则,如果(计数如果您在
计数
已经
0
时继续按键,您将触发
ResetCounting()
多次。当
计数
重置为
5
时,仍有一些调用
ResetCounting()
在队列中,当其仍然大于
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;
}
int计数=5;
bool invokedReset=false;
无效更新(){
if(Input.GetKeyDown(KeyCode.O)和&counting>0){
计数--;
}

否则,如果(计数如果您在
计数
已经
0
时继续按键,您将触发
ResetCounting()
多次。当
计数
重置为
5
时,仍有一些调用
ResetCounting()
在队列中,当其仍然大于
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;
}
int计数=5;
bool invokedReset=false;
无效更新(){
if(Input.GetKeyDown(KeyCode.O)和&counting>0){
计数--;
}

否则,如果(计数如果您在
计数
已经
0
时继续按键,您将触发
ResetCounting()
多次。当
计数
重置为
5
时,仍有一些调用
ResetCounting()
在队列中,当其仍然大于
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;
}
int计数=5;
bool invokedReset=false;
无效更新(){
if(Input.GetKeyDown(KeyCode.O)和&counting>0){
计数--;
}

否则,如果(计数如果您在
计数
已经
0
时继续按键,您将触发
ResetCounting()
多次。当
计数
重置为
5
时,仍有一些调用
ResetCounting()
在队列中,当其仍然大于
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;
}
int计数=5;
bool invokedReset=false;
无效更新(){
if(Input.GetKeyDown(KeyCode.O)和&counting>0){
计数--;
}

如果(当然,现在你说的很有意义。谢谢!当然,现在你说的很有意义。谢谢!当然,现在你说的很有意义。谢谢!当然,现在你说的很有意义。谢谢!当然,现在你说的很有意义。谢谢!