本项目已成功集成了完整的游戏时间系统,支持时间加速、时间控制和时间管理功能。现在可以实现"现实 1 小时 = 游戏 1 天"的时间加速效果。
- 暂停时间 - 时间速度为 0,所有游戏时间相关事件暂停
- 正常速度 - 时间速度为 1x,与现实时间同步
- 加速播放 - 时间速度可调节,最高 24x
- 预设速度 - 提供多种预设时间速度
- 时间跳转 - 跳转到下一个整点或下一天
- 时间显示 - 实时显示游戏时间和日期
- 时间统计 - 提供详细的时间统计信息
# 游戏时间数据
class GameTimeData:
var total_seconds: float = 0.0
var days: int = 0
var hours: int = 9 # 默认从9点开始
var minutes: int = 0
var seconds: int = 0- 现实时间定时器 - 不受时间加速影响
- 游戏时间定时器 - 受时间加速影响
- 自动适配 - 根据时间速度自动调整
- 状态管理 - 支持暂停、恢复、重置
- 进度跟踪 - 提供剩余时间和进度信息
- 时间显示 - 实时显示游戏时间和状态
- 速度控制 - 滑块控制时间速度
- 快捷按钮 - 暂停、播放、快进、超快进
- 预设按钮 - 快速设置常用时间速度
- 跳转功能 - 跳转到下一个整点或下一天
- T 键 - 切换时间控制 UI 显示
- 空格键 - 暂停/恢复时间
- 数字键 1-4 - 设置预设时间速度
- 数字键 0 - 暂停时间
# 获取时间管理器
var game_time_manager = get_node("/root/GameTimeManager")
# 设置时间速度
game_time_manager.set_time_speed(6.0) # 6倍速度
# 使用预设速度
game_time_manager.set_time_speed_preset(GameTimeManager.TimeSpeedPreset.VERY_FAST)# 暂停时间
game_time_manager.pause_time()
# 恢复时间
game_time_manager.resume_time()
# 快进时间
game_time_manager.fast_forward_time()
# 超快进时间
game_time_manager.ultra_fast_forward_time()# 跳转到下一个整点
game_time_manager.jump_to_next_hour()
# 跳转到下一天
game_time_manager.jump_to_next_day()
# 跳转到指定时间
game_time_manager.jump_to_time(14, 30, 0) # 14:30:00# 获取时间数据
var time_data = game_time_manager.get_current_game_time()
print("当前时间: %s" % time_data.get_formatted_date())
# 获取格式化时间
var formatted_time = game_time_manager.get_formatted_game_time()
print("格式化时间: %s" % formatted_time)# 获取时间速度
var speed = game_time_manager.get_time_speed()
print("时间速度: %.1fx" % speed)
# 获取时间状态
var state = game_time_manager.get_time_state()
print("时间状态: %s" % GameTimeManager.TimeState.keys()[state])
# 获取状态描述
var description = game_time_manager.get_time_state_description()
print("状态描述: %s" % description)# 获取时间统计信息
var stats = game_time_manager.get_time_statistics()
print("现实时间: %.1f秒" % stats.real_time_elapsed)
print("游戏时间: %.1f秒" % stats.game_time_elapsed)
print("效率比: %.2fx" % stats.efficiency_ratio)# 创建游戏时间定时器
var game_timer = TimeAcceleratedTimer.create_game_time_timer(60.0, false)
add_child(game_timer)
game_timer.timeout.connect(_on_timer_timeout)
# 创建现实时间定时器
var real_timer = TimeAcceleratedTimer.create_real_time_timer(60.0, false)
add_child(real_timer)
real_timer.timeout.connect(_on_timer_timeout)# 启动定时器
timer.start()
# 停止定时器
timer.stop()
# 暂停定时器
timer.pause()
# 恢复定时器
timer.resume()
# 重置定时器
timer.reset()# 获取剩余时间
var time_left = timer.get_time_left()
print("剩余时间: %.1f秒" % time_left)
# 获取总时间
var total_time = timer.get_total_time()
print("总时间: %.1f秒" % total_time)
# 获取进度
var progress = timer.get_progress()
print("进度: %.1f%%" % (progress * 100))# 获取时间控制UI
var time_control_ui = get_node("/root/TimeControlUI")
# 显示UI
time_control_ui.show_time_control()
# 隐藏UI
time_control_ui.hide_time_control()
# 切换UI显示
time_control_ui.toggle_ui()# 设置自动隐藏
time_control_ui.set_auto_hide(true)
# 获取时间统计
var stats = time_control_ui.get_time_statistics()
# 导出时间数据
var time_data = time_control_ui.export_time_data()- 工资发放定时器已适配游戏时间
- 每小时发放一次工资(游戏时间)
- 时间加速时,工资发放频率相应增加
- AI 决策定时器已适配游戏时间
- 每分钟进行一次决策(游戏时间)
- 时间加速时,AI 决策频率相应增加
- 绩效评估定时器已适配游戏时间
- 每 5 分钟评估一次(游戏时间)
- 时间加速时,绩效评估频率相应增加
- 价格更新定时器已适配游戏时间
- 每 5 分钟更新一次价格(游戏时间)
- 时间加速时,价格更新频率相应增加
# 连接时间变化信号
game_time_manager.time_speed_changed.connect(_on_time_speed_changed)
game_time_manager.time_state_changed.connect(_on_time_state_changed)
game_time_manager.game_time_updated.connect(_on_game_time_updated)
game_time_manager.day_changed.connect(_on_day_changed)
game_time_manager.hour_changed.connect(_on_hour_changed)func _on_time_speed_changed(new_speed: float):
print("时间速度变化: %.1fx" % new_speed)
func _on_day_changed(new_day: int):
print("新的一天开始: 第%d天" % (new_day + 1))
func _on_hour_changed(new_hour: int):
print("时间变化: %02d:00" % new_hour)- 所有时间变化都会记录到综合日志系统
- 包括时间速度变化、天数变化、小时变化等
- 支持时间数据的导出和分析
- 提供详细的时间统计信息
- 包括现实时间、游戏时间、效率比等
- 支持时间数据的可视化分析
| 时间速度 | 现实时间 | 游戏时间 | 效果描述 |
|---|---|---|---|
| 0.0x | 1 小时 | 0 小时 | 暂停 |
| 0.5x | 1 小时 | 0.5 小时 | 慢速 |
| 1.0x | 1 小时 | 1 小时 | 正常 |
| 2.0x | 1 小时 | 2 小时 | 快速 |
| 6.0x | 1 小时 | 6 小时 | 快进 |
| 24.0x | 1 小时 | 1 天 | 超快进 |
- 使用 24x 速度快速观察长期行为模式
- 现实 1 小时 = 游戏 1 天
- 适合观察 AI 角色的长期发展
- 使用 6x 速度进行功能测试
- 现实 10 分钟 = 游戏 1 小时
- 适合测试各种游戏机制
- 使用 1x 速度进行实时观察
- 现实时间 = 游戏时间
- 适合观察 AI 角色的实时行为
- 时间加速不会显著影响游戏性能
- 定时器频率增加,但计算量相对较小
- 建议在性能较好的设备上使用高倍速
- 时间系统内存占用很小
- 时间数据存储效率高
- 支持长时间运行
# 在Godot中运行测试脚本
var test_script = preload("res://test_time_system.gd").new()
get_tree().root.add_child(test_script)
test_script.run_all_tests()- 时间管理器功能测试
- 时间加速效果测试
- 定时器适配测试
- UI 界面测试
- 系统集成测试
- 观察时间显示是否正确
- 检查定时器是否按预期工作
- 验证时间加速效果
- 测试 UI 功能是否正常
- 检查 GameTimeManager 是否正确初始化
- 确认时间速度不为 0
- 检查定时器是否正常启动
- 检查 TimeAcceleratedTimer 是否正确创建
- 确认定时器类型设置正确
- 检查信号连接是否正确
- 检查 TimeControlUI 是否正确创建
- 确认 UI 节点路径正确
- 检查显示/隐藏逻辑
系统会在控制台输出详细的调试信息:
[GameTimeManager] 游戏时间管理器已初始化
[TimeAcceleratedTimer] 定时器启动: 60.00秒 (GAME_TIME)
[TimeControlUI] 时间控制UI已初始化
[TimeSystemIntegration] 时间系统集成完成
# 获取时间统计信息
var stats = game_time_manager.get_time_statistics()
print("效率比: %.2fx" % stats.efficiency_ratio)# 获取系统状态
var status = time_system_integration.get_time_system_status()
print("系统状态: %s" % str(status))# 添加自定义时间事件
func _on_game_time_updated(time_data: GameTimeData):
if time_data.hours == 12 and time_data.minutes == 0:
# 中午12点事件
trigger_lunch_event()# 创建时间相关任务
func create_time_based_task():
var task_timer = TimeAcceleratedTimer.create_game_time_timer(3600.0, true)
task_timer.timeout.connect(_on_task_completed)
task_timer.start()# 分析时间数据
func analyze_time_data():
var time_data = game_time_manager.export_time_data()
# 分析游戏时间分布
# 分析时间加速效果
# 生成时间报告时间系统为 Microverse 项目增加了强大的时间控制功能,不仅实现了"现实 1 小时 = 游戏 1 天"的时间加速效果,更为科研应用提供了灵活的时间管理工具。通过时间加速,可以快速观察 AI 角色的长期行为模式,收集丰富的时间相关数据,为 AI 研究提供宝贵的时间维度支持。