为蓝图 Mod 创建游戏存档
当 Mod 需要跨关卡或游戏会话保存状态时,可以在蓝图 Mod 中创建自己的存档对象。本文介绍创建存档对象、保存数据和重新加载数据的基本步骤。
存档通常位于游戏的 Saved/SaveGames 文件夹,游戏目录常见于 AppData。游戏可以更改此位置,因此 Mod 存档一般会与该游戏自身的存档放在同一区域。
创建存档对象
先创建一个继承自 SaveGame 类的蓝图,再将需要保存的变量添加到蓝图中。将变量设为 public,以便从 Mod 蓝图中访问。
回到 Mod 蓝图,创建一个对象引用变量,指向刚创建的存档蓝图。原文示例中的蓝图名为 SaveData。
保存数据
首先创建存档对象引用,并将它设置到对象引用变量中。为避免重复创建,可在 BeginPlay 事件中创建引用。
然后,把要保存的值写入存档对象中的变量,调用 SaveGameToSlot 将数据保存到指定槽位。槽位名称可自行选择;原文建议使用类似 Mods/[your mod name]/[your save name] 的名称,便于整理游戏存档目录。
也可以创建名为 SaveName 的字符串变量来保存槽位名称,以便集中修改。
加载数据
首先检查存档是否存在;存在时从对应槽位加载,再将返回值转换为创建的存档对象类型。之后可使用存档对象中的变量恢复数据。
将保存与加载组合起来
下图展示了简化后的保存和加载示例。可以将逻辑整理成函数,使蓝图更清楚;函数可以放在存档蓝图中,也可以放在 Mod 蓝图中。