3.1 GameManager 总控系统
GameManager 是整个游戏生命周期的主控模块,负责各系统的初始化、更新调度、状态切换、存档退出等顶层操作控制。同时,它也是各子系统间通信、时间推进的枢纽核心。
3.1.1 生命周期管理(Init → Update → Save → Quit)
GameManager 负责游戏启动至退出全流程的生命周期调度,包含以下阶段:
阶段 | 描述 |
|---|---|
Init | 加载所有 ScriptableObject 数据,注册子系统,初始化全局状态与界面 |
StartGame | 创建或加载存档,构建初始游戏状态(时间、资源、设施、居民) |
Update | 驱动 Tick 时间推进与模块级逻辑更新 |
Pause / Resume | 控制是否暂停更新循环(如菜单打开时) |
Save | 调用 SaveSystem 序列化当前状态为存档文件 |
Quit | 释放资源,执行清理逻辑,返回主菜单或退出游戏 |
GameManager 应支持以下典型 API 接口:
3.1.2 子系统注册/反注册机制
所有核心子系统(如 ResourceSystem、FacilitySystem、ResidentSystem 等)均应由 GameManager 统一注册并控制其生命周期。
推荐采用模块注册表机制(Module Registry):
各子系统实现
IGameModule接口:
注册方式:
调用更新:
在运行期可热插拔新模块,用于 DLC / Debug 模块挂载。
3.1.3 时间推进机制(Tick / 天数 / 周期)
本游戏采用“日历推进 + Tick 模拟”的混合时间机制:
类型 | 单位 | 控制频率 | 用途 |
|---|---|---|---|
Tick | 每帧 or 每固定秒数 | 每帧 / 0.1s | 资源更新、行为更新 |
Day | 每天 | 每 n Tick → 1 Day | 每日例行结算、设施产出 |
Cycle | 每 7~30 天 | 每 n Day → 1 Cycle | 派系状态、任务刷新、事件触发 |
实现方式建议:
系统内各模块如 FacilitySystem.Tick(), ResidentSystem.Tick() 将挂接至 GameManager 的 Tick 驱动中。