如何手动重启Godot中的一次性Timer并重置为初始Wait Time值
报错原因是time_left为Timer节点的只读属性,仅支持读取当前剩余计时时长,不允许手动赋值修改,因此直接给time_left赋值会触发索引无效错误。
正确重置方案
方案1:未在代码中修改过wait_time时使用
直接调用无参start()方法即可,该方法默认会读取检查器中预设的Wait Time值重启定时器,无论定时器当前处于运行状态还是已触发完毕的一次性定时器,都可直接重置为原始等待时间重新计时:
$Timer.start()
方案2:代码中修改过wait_time、需要恢复初始值时使用
先在节点初始化阶段存储检查器设置的原始等待时间,重置时先恢复wait_time再启动即可:
# 全局变量存储原始等待时间 var original_wait_time: float func _ready(): # 节点就绪时读取检查器配置的初始值存储 original_wait_time = $Timer.wait_time # 需要重置定时器时调用该函数 func reset_timer(): $Timer.wait_time = original_wait_time $Timer.start()
如果仅需要重置等待时间、不需要立刻启动定时器,调用$Timer.stop()即可,后续调用无参start()时依然会自动使用当前wait_time值计时。
内容的提问来源于stack exchange,提问作者Kyle Pollard
相关产品推荐
相关产品推荐

