分别在Update和FixedUpdate使用GetKeyDown

测试目的

探究分别在Update和FixedUpdate使用GetKeyDown执行次数,会不同的

测试开始

分别按下五次J键

在Update测试

我们先在Update测试,很正常是一帧重置一下状态,以防止点击一下执行多次,请看代码

private void Update()
    {
        if (Input.GetKeyDown(KeyCode.J))
        {
            count += 1;
            Debug.Log(count);
        }
        if (Input.GetKeyUp(KeyCode.J))
        {
            count = 0;
        }
    }

测试结果

在FixedUpdate测试(默认每秒执行50帧的情况下)

修改FixedUpdate每秒执行帧率可以在Project > Time > Fixed Timestep设置,不修改也就是0.02,s为单位,每多少s执行一次

void FixedUpdate()
    {
        if (Input.GetKeyDown(KeyCode.J))
        {
            count += 1;
            Debug.Log(count);
        }
        if (Input.GetKeyUp(KeyCode.J))
        {
            count = 0;
        }
    }

测试结果

是不是很迷惑?很正常

请看Unity GetKeyDown的官方解释

问题解决方案

固定帧率设置和Update刷新率一样,就不会出问题,但如果这样,那FixedUpdate又有什么意义,像跳跃这种东西,最好放在Update,只有必须需要每帧准确刷新的才要放在FixedUpdate

这些都是我的个人理解,非常感谢您看我的这篇文章

posted @ 2021-07-25 12:48  yassine  阅读(383)  评论(0编辑  收藏  举报