Unity3D 游戏循环分析(五):追赶模式


这种模式可以更好的处理掉帧引发的逻辑问题。大体思路是,当出现掉帧时,只运行逻辑,不绘制画面,用节省下来的时间追赶落后的帧。这种策略会降低图形绘制的频率,但可以保证逻辑的执行。

具体说来,每次Render执行之前,要保证累计运行时长到达阈值。如果出现卡顿,后面的帧会多次执行Update,直到赶上之前的帧为止。代码结构如下:

使用这种模式时,要注意不要将FPS设置的太大,否则最慢的机器将永远赶不上时间,它将卡在死循环中。对于较差的机器,Render在这逻辑循环之外,所以总体上看还是会节省一些时间。虽然看起来会比较卡,但还是能够正确的运行游戏。

在Unity3d中,对应这个模式的循环是FixUpdate。Unity中设置Fixed Timestep可以控制FixedUpdate速率,其数值为时长周期。如果FixedUpdate在限定的时间执行不完,图形绘制频率会降低,以保证物理的执行。另一方面,设置Maximum Allowed Timestep可以防止逻辑执行时间过长,卡死线程。

本文出自 松阳论道 转载必须注明出处

http://blog.songyang.net/5740.html

说点什么吧...

电子邮件地址不会被公开。 必填项已用*标注