【发布时间】:2016-06-07 10:05:12
【问题描述】:
我很难找到一个关于序列化的示例,其中包含多个对象。
通常,这些示例显示了通过一个对象(通常是为了保存您要保存或加载的数据而创建的一个类)的序列化。这很好,但我找不到展示如何对更多对象进行序列化和反序列化的东西。
我正在设想一个类类型的不同实例的情况,所以我不确定在这种情况下如何反序列化。
这就是我序列化的方式:
BinaryFormatter savegame_formatter = new BinaryFormatter();
FileStream savefile = File.Open(Application.persistentDataPath +
"/savegame.dat", FileMode.Open);
savegame_formatter.Serialize(savefile, Player1Data);
savegame_formatter.Serialize(savefile, Player2Data);
savefile.Close();
两个序列化的类是同一个类(PlayerData);只有2个不同的实例;具有不同的价值。反序列化时,如何区分这2个实例?
BinaryFormatter loadgame_formatter = new BinaryFormatter();
FileStream loadfile = File.Open(Application.persistentDataPath + "/savegame.dat", FileMode.Open);
// How do you deserialize Player1Data and Player2Data?
PlayerData cloned = (PlayerData)loadgame_formatter.Deserialize(loadfile);
【问题讨论】:
-
什么不使用 json 将所有内容写入文件并反序列化它们?
-
会更简单吗?大多数示例都显示了二进制方法,尽管我从来没有处理过这种情况,所以我不确定为什么一个会比另一个更受欢迎。
-
是的,这会更简单,这就是您应该这样做的方式。
BinaryFormatter的例子很多,因为 Json 没有得到天真的支持。现在它是。如果你需要一个例子,请告诉我。只需使用PlayerData类的外观更新您的问题。
标签: c# serialization unity3d