GetKeyDown行为奇怪,Unity,C#
我对Unity中的GetKeyDown有一个问题。即使每次按下按钮时日志似乎都会检测到,但它并不总是执行代码。当快速点击按钮时,似乎会发生更多的情况。我想要的是将“计数”减少到零,然后在x秒后重新填充到其初始值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
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){
计数--;
}
如果(当然,现在你说的很有意义。谢谢!当然,现在你说的很有意义。谢谢!当然,现在你说的很有意义。谢谢!当然,现在你说的很有意义。谢谢!当然,现在你说的很有意义。谢谢!