1.测试1
2.模拟循环
都知道FixedUpdate是固定更新的,但是却不是固定时间间隔更新的,从图中可以看出物理有自循环,伪代码如下(经过本人测试得出的伪代码,仅供参考):
while(true)
{
startTime = getCurrentTime();
durationTime=startTime-preTime
preTime=startTime
totalTime+=durationTime
while(Time.time+FixedTimestep<=totalTime)
{
PhysicUpdate()
Time.time+=FixedTimestep
}
LogicUpdate()
Time.time=totalTime
sleep(startTime + 1/FPS - getCurrentTime());
}
所以说FixedUpdate并不是固定时间更新,二十会根据每帧的时间来进行追赶或者不更新
3.Maximum Allowed Timestep
最后来说一下Maximum Allowed Timestep,为什么会存在这个最大间隔时间,举个例子:假如现在Update中运行的逻辑计算量很大消耗时间很长,这个时候durationTime就会很大,导致物理循环会追赶很多次,如果物理循环逻辑消耗时间也比较长,就会造成恶性循环