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

本文关键字:实例 序列化 存到文件 | 更新日期: 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
                    });