其他分享
首页 > 其他分享> > 分别在Update和FixedUpdate使用GetKeyDown

分别在Update和FixedUpdate使用GetKeyDown

作者:互联网

测试目的

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

测试开始

在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的官方解释

问题解决方案

如果你放到FixedUpdate它也会按照Update执行帧率进行重置,有时会有误差,因为FixedUpdate和Update执行帧率不同,修改固定帧率即可更接近Update执行结果

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

标签:count,GetKeyDown,Update,测试,Input,FixedUpdate
来源: https://www.cnblogs.com/godshadow/p/15057546.html