使用子实例(类序列化)序列化整个实例并保存到文件

时间:2013-06-21 19:55:04

标签: c# serialization unity3d

我正在使用Unity3D构建游戏。我有一个名为GameInstance的类,其中包含所有当前的游戏实例数据。它包含多个子类,例如Player属性将返回Player对象。

然而,所有对象都是简单的键/值对象,它只是数据。现在我需要序列化所有这些并将其保存到文件中,以便我可以重新加载它以重新启动它离开的游戏。

这就是我基本上打算做的事情,也许有人会有更好的建议,但这是我找到的最灵活的选择。

我过去使用过.NET XML对象序列化但是已经有一段时间了,我需要对此有更直接的建议。我应该序列化为XML或JSON吗?

TL; DR :我想在Unity3D项目中使用C#/ .NET序列化整个类及其所有内容。我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:1)

我个人更喜欢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
                    });