分别在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;
        }
    }

测试结果

分别在Update和FixedUpdate使用GetKeyDown

在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;
        }
    }

测试结果

分别在Update和FixedUpdate使用GetKeyDown

是不是很迷惑?很正常

请看Unity GetKeyDown的官方解释

分别在Update和FixedUpdate使用GetKeyDown

问题解决方案

分别在Update和FixedUpdate使用GetKeyDown

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

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

上一篇:图片的格式分类和优缺点


下一篇:基于知识图谱的医药领域问答项目QABasedOnMedicaKnowledgeGraph