Unity C#反序列化处理额外的属性

时间:2014-07-30 20:13:43

标签: c# .net serialization unity3d

我正在尝试保存我在Unity中制作的游戏数据,用C#编写。我能够序列化我的数据并反序列化它。当我反序列化一个文件并且我序列化的类已经删除了一个属性时,问题出现了。发生这种情况时会抛出SerializationException 示例: 可以说我有这个初级课程:

[Serializable]
public class foo {
    public int bar;
    public int baz;
}

然后我将它序列化为一个文件。然后我修改此类并删除public int baz。下次我尝试反序列化该文件时会抛出异常,因为它找不到将baz放在类foo中的位置。

有没有办法告诉反序列化程序忽略额外的属性或将类foo转换成可以处理额外对象的东西?

2 个答案:

答案 0 :(得分:1)

我相信您正在寻找版本容忍序列化......请阅读here

答案 1 :(得分:1)

您是否尝试过使用Json.NET?它容忍额外的属性(同时更快,并具有其他附加功能)。

我刚测试过(用bar和baz保存,然后删除baz,然后反序列化):

public class foo {
    public int bar {get;set;}
    public int baz {get;set;}
}