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

本文关键字:属性 处理 反序列化 Unity | 更新日期: 2023-09-27 18:15:47

我正在尝试保存我用Unity制作的、用c#编写的游戏数据。我能够序列化和反序列化我的数据。当我反序列化了一个文件,而我序列化的类删除了一个属性时,问题就出现了。当这种情况发生时,会抛出一个SerializationException
:假设我有这样一个初始类:

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

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

是否有一种方法可以告诉反序列化器忽略额外的属性或将类foo转换为可以处理额外对象的东西?

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

你试过使用Json.NET吗?它可以容忍额外的属性(以及更快的速度和其他添加的功能)。

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

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

我相信您正在寻找版本容忍序列化…