用子实例序列化整个实例(类序列化)并保存到文件中
本文关键字:实例 序列化 存到文件 | 更新日期: 2023-09-27 18:19:31
我正在用Unity3D构建一个游戏。我有一个名为GameInstance的类,其中包含所有当前游戏实例数据。它包含多个子类,例如Player
属性将返回一个Player
对象。
然而,所有对象都是简单的键/值对象,它只是数据。现在我需要序列化所有这些,并将其保存到一个文件中,这样我就可以重新加载它,在它离开的地方重新启动游戏。
这就是我基本上想要做的,也许有人会有更好的建议,但这是我发现的最灵活的选择。
我过去使用过.NET XML对象序列化,但这已经有一段时间了,我需要对此有更直接的建议。例如,我应该序列化为XML还是JSON?
TL;DR:我想在Unity3D项目中用C#/.NET序列化整个类及其所有内容。我应该如何继续?
谢谢!
我个人更喜欢json。如果您使用的是json.NET,这将非常简单;
string json = JsonConvert.SerializeObject(MyObject);
或将其压实;
File.WriteAllText("./myfile", JsonConvert.SerializeObject(MyObject));
然后要反序列化,您只需要执行;
MyObject obj = JsonConvert.DeserializeObject<MyObject>(File.ReadAllText("./myfile"));
编辑:为了响应异常,你想使用这个重载,它允许你更改序列化设置;
JsonConvert.SerializeObject(ResultGroups,
new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
});