GameIOProcessor
游戏保存/加载/新建时的事件,可注册预/后处理,并提供一个序列化工具类。
GameIOProcess
事件定义如下:
cs
delegate void GameIOProcess(GameIOContext context);
// ->
static void MySaveHandler(GameIOContext context);
GameIOContext
一个帮助序列化/反序列化数据到当前存档的工具类。
cs
static void MySaveHandler(GameIOProcessor.GameIOContext context)
{
var myData = new ArbitraryData();
context.Save(myData, "uniqueChunkName");
}
static void MyLoadHandler(GameIOProcessor.GameIOContext context)
{
if (!context.Load<ArbitraryData>(out var loaded, "uniqueChunkName") ||
loaded is null) {
return;
}
// use loaded data
}
string
参数 chunkName
是这块数据的唯一标识符,如果省略,将使用数据类型的全名。如果您有多个相同类型的数据,可以考虑使用基于索引或基于哈希值的块名称。
注册
cs
GameIOProcessor.AddSave(MySaveHandler, post: true);
GameIOProcessor.AddLoad(MyLoadHandler, post: true);
bool
参数 post
决定这是一个后处理事件还是一个预处理事件。
或者通过属性注册:
cs
[CwlPostSave] // [CwlPreSave]
static void MySaveHandler(GameIOProcessor.GameIOContext context);
[CwlPostLoad] // [CwlPreLoad]
static void MyLoadHandler(GameIOProcessor.GameIOContext context);