【问题标题】:Update with state change triggering GetMouseButtonDown使用状态更改触发 GetMouseButtonDown 进行更新
【发布时间】:2017-08-02 22:01:47
【问题描述】:

我正在努力为看似相当简单的问题找到一个优雅的解决方案。

Update()中,一些代码在state1中执行,当点击if (Input.GetMouseButtonDown(0))时,又执行了一些代码,状态变为state2。 p>

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

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

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

谢谢

【问题讨论】:

    标签: unity3d mouseevent state


    【解决方案1】:

    我认为您正在寻找的是边缘检测。本质上,您检查状态变化的条件。虽然布尔值与您上次询问时相同,但您什么也不做,但一旦它发生变化,您就会执行一些代码。

    //global variable
    bool lastState = false;
    
    //inside a method
    bool newState = Input.GetMouseButtonDown(0);
    if(newState != lastState)
    {
        lastState = newState;
    
        //do stuff
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 2020-07-26
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多