分别在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
这些都是我的个人理解,非常感谢您看我的这篇文章