FixedUpdate真的能固定时间执行吗

Posted 时光不染

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FixedUpdate真的能固定时间执行吗相关的知识,希望对你有一定的参考价值。

前两天遇到个问题,在低端机型上FixedUpdate真的能做到固定时间执行吗。这个问题,Emm…

我印象中的FixedUpdate,正如我百度的:

然鹅…大概还有一些小伙伴和我遇到了同样的疑惑:

看来看去,还是自己简单测试一下

private void FixedUpdate() 
        index1 ++;
        Debug.Log($"FixedUpdate第index1次刷新,增量时间:Time.deltaTime,真实时间:Time.realtimeSinceStartup");
    
    private void Update() 
        index2 ++;
        Debug.Log($"-----------------Update第index2帧,增量时间:Time.deltaTime,真实时间:Time.realtimeSinceStartup-----------------");
    

如果用增量时间,果然是符合预期的,事实上,这个时间是与真实时间无关的。我们可以在 Edit → Project Setting → Time → Fixed Timestep 设置这个数值
但是真实时间,每次Update之前可能连续迅速执行多次FixedUpdate,也有可能不执行(上图第4帧-第5帧)
FixedUpdate除了用来处理物理逻辑之外并不适合处理其他模块的逻辑

FixedUpdate固定增量时间的原因

在物理模拟中,保证一个固定的增量时间是十分重要的。这是因为在游戏引擎进行物理模拟时要使用数值积分,而作为最简单的数值积分方法——欧拉法在游戏引擎中大量使用。而在游戏引擎的物理模拟中,一个不稳定的增量时间可能导致很多和预期相悖的结果。

固定的增量时间作为一个常量参数传递给物理模拟模块,这样我们就能够保证物理模拟的增量时间固定,同时还能将物理模拟的更新频率和游戏引擎的更新频率进行解耦——物理的模拟不受引擎的更新频率影响,无论游戏的更新频率是多少,传递给物理模拟的增量时间都是一个常量

参考链接一

以上是关于FixedUpdate真的能固定时间执行吗的主要内容,如果未能解决你的问题,请参考以下文章

FixedUpdate真的能固定时间执行吗

FixedUpdate真的能固定时间执行吗

Unity中Update,FixedUpdate,LateUpdate的区别

关于unity中的updateLateupdate和FixedUpdate

unity中的updateLateupdate和FixedUpdate。

Unity中Update,FixedUpdate,LateUpdate的区别