GDevelop 中文文档 下载 App

移动速度忽快忽慢:帧率与增量修正

症状:同一游戏,高配电脑上角色飞快,办公室老电脑上慢吞吞;或者对象移动「一顿一顿」。九成是没乘 TimeDelta。

原因:事件每帧都跑,但帧率因机器而异

GDevelop 每秒尽力跑 60 帧,但实际帧率取决于设备:快机器 60 帧,慢机器可能只有 25 帧。官方文档给了笔账:

同样 10 秒,数值差了一倍多——玩家的体验就是「速度不一样」。

修正:乘上 TimeDelta() 表达式

TimeDelta() 返回上一帧到现在经过的秒数。把「每帧加固定值」改成「每秒加固定值」:

# 错误写法(帧率越快加得越快)
每帧:把 Timer 加 3

# 正确写法(任何机器上都是每秒加 180)
每帧:把 Timer 加 3 * TimeDelta()

帧率高的机器每帧 TimeDelta 小、帧率低的每帧 TimeDelta 大,两者相乘后每秒增量恒定。

官方帮助文档中带 TimeDelta 修正的条件与动作示例
事件示例:增量乘以 TimeDelta 保证跨设备一致

什么时候不用乘

官方给的口诀:只在「持续地」改变数值时用 TimeDelta。

配套:用计时器替代「每帧加」

「倒计时 30 秒」这类需求,比每帧减 TimeDelta 更稳的写法是场景计时器:条件「计时器 Timer 大于 30 秒」触发事件,配合动作「启动/重置计时器」。计时器基于真实时间,天然免修正。

自测方法

做完改动后跑预览,开调试器盯着变量数值:数值增长速度应与你手掐的秒表一致(每秒加多少就是多少),且在预览窗口缩放、后台占用变化时保持稳定。