存档、偏好设置与回滚
存档系统
SaveSystem 将当前 EngineState 序列化为 JSON。
go
state := engine.GetSaveState()
err := engine.SaveSystem.Save(1, state)
state, err = engine.SaveSystem.Load(1)
engine.LoadSaveState(state)内置 UI 的 SAVE/LOAD 会调用同一套系统。
EngineState 内容
存档包含:
- 当前节点 ID 和 Step 下标
- 背景 Key 和路径
- 立绘状态
- 当前 BGM Key
- 变量表
- 历史文本
- 回滚快照
注意:运行时函数、回调和外部句柄不会被序列化。
SaveDir
go
galgo.Config{
SaveDir: "./saves",
}当前实现的普通存档文件名为:
text
saves/save_1.json
saves/save_2.json全局解锁状态:
text
saves/gallery.json偏好设置
偏好设置由 config.PreferencesManager 管理,适合保存不应随存档回滚的数据,例如音量、语言、全屏状态和自定义全局标记。
go
engine.Preferences.SetCustom("true_ending_unlocked", true)
engine.Preferences.Save()
value, ok := engine.Preferences.GetCustom("true_ending_unlocked")回滚
每次执行阻塞文本前,Galgo 会保存一份回滚快照。玩家打开 LOG 后点击历史文本,可回到对应状态。
回滚会恢复:
- 脚本位置
- 背景和立绘
- 变量
- 对话历史
回滚不会恢复:
- Steam 后端状态
- 已写入全局解锁文件的成就/画廊
- 偏好设置
如果在 Callback 中修改了外部文件、网络状态或第三方 SDK,这些副作用不会被回滚。需要可回滚的数据应写入 Engine 变量。