【Unity】[帮助文档] 若FixedUpdate内的操作时间长于FixedTimestep会怎样

背景

挺好奇的,比如fixupdate的间隔默认是0.02秒,如果我写在里面的操作超过0.02秒的话,unity是直接中断操作还是会卡死或闪退呢,于是我搜索了一波,国内搜不到,谷歌搜半天搜到个这个。

如果物理系统负载很重,并且游戏无法在 Fixed Timestep 窗口中处理每个物理步骤,则帧的处理时间会更长,从而影响性能。
虽然物理模拟仍然准确,但游戏的帧率会因此降低。 在极端情况下,物理引擎持续超载会导致性能下降,每一帧的显示时间都比上一帧长。
这是因为一帧中所需的物理步骤数基于最后一帧的持续时间。 因此,如果最后一帧由于沉重的物理负载花费了更长的时间,Unity
的响应将是在下一帧中安排更多的物理步骤,以满足超过现在增加的 Delta Time 的指定步骤频率。
这意味着,如果物理引擎仍然处于相同的负载下,每一帧将花费比上一帧更长的时间,直到游戏完全冻结。

我的理解

大概就是说时间片到了以后(默认0.02)函数内的操作会被暂时中断,在下一个fixupdate调用中接着操作。所以如果我们某帧开始操作都为0.021秒才能完成的话,剩下的0.001秒操作会被延到下一帧,假设操作固定为0.021秒,则每帧操作都将逐渐延长,直到卡死。

参考链接

https://gamedevbeginner.com/how-to-use-fixed-update-in-unity/
https://forum.unity.com/threads/how-bad-idea-is-to-increase-the-default-fixedupdate-frequency.1197865/

猜你喜欢

转载自blog.csdn.net/gongfpp/article/details/128895643