我很难找到一个优雅的解决方案来解决看似相当简单的问题。
在Update()
中,某些代码在 state1 中执行,单击if (Input.GetMouseButtonDown(0))
时,会执行更多代码并将状态更改为 state2
但是,state2还有一个if (Input.GetMouseButtonDown(0))
由state1的原始if (Input.GetMouseButtonDown(0))
触发,因为更改很快发生,因为Input.GetMouseButtonDown(0)
可以在几个帧中返回true。
我尝试过使用布尔值并使用Time.deltaTime()
,但我遇到的问题是确保第一次鼠标点击不会触发第二次点击。
如果有人有任何想法或建议,我将非常感激。
由于
答案 0 :(得分:1)
我认为您正在寻找的是边缘检测。基本上,您检查状态变化的条件。虽然布尔值与上次询问时相同,但除了一旦更改后,您就不会执行任何操作,而是执行一些代码。
//global variable
bool lastState = false;
//inside a method
bool newState = Input.GetMouseButtonDown(0);
if(newState != lastState)
{
lastState = newState;
//do stuff
}