更新状态更改,触发GetMouseButtonDown

时间:2017-08-02 13:55:47

标签: unity3d mouseevent state

我很难找到一个优雅的解决方案来解决看似相当简单的问题。

Update()中,某些代码在 state1 中执行,单击if (Input.GetMouseButtonDown(0))时,会执行更多代码并将状态更改为 state2

但是,state2还有一个if (Input.GetMouseButtonDown(0))由state1的原始if (Input.GetMouseButtonDown(0))触发,因为更改很快发生,因为Input.GetMouseButtonDown(0)可以在几个帧中返回true。

我尝试过使用布尔值并使用Time.deltaTime(),但我遇到的问题是确保第一次鼠标点击不会触发第二次点击。

如果有人有任何想法或建议,我将非常感激。

由于

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是边缘检测。基本上,您检查状态变化的条件。虽然布尔值与上次询问时相同,但除了一旦更改后,您就不会执行任何操作,而是执行一些代码。

//global variable
bool lastState = false;

//inside a method
bool newState = Input.GetMouseButtonDown(0);
if(newState != lastState)
{
    lastState = newState;

    //do stuff
}