【发布时间】:2014-09-19 18:14:02
【问题描述】:
在 Unity 上制作游戏,但我不确定这对这个问题是否重要:
创建一个MyClass 对象并将其整数宽度属性设置为100。
MyClass obj = new MyClass();
obj.width = 100;
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Create ("stuff.dat");
bf.Serialize(file, obj);
file.Close();
加载它。
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Open("stuff.dat");
MyClass obj = (MyClass)bf.Deserialize(file);
file.Close();
width 属性的默认值为 0,而不是 100。
using UnityEngine;
using System.Collections;
[System.Serializable]
public class MyClass {
public int width = 0;
public int height = 0;
}
这是为什么呢?
【问题讨论】:
-
我的水晶球可以看出这个 width 属性原本不是类的一部分,缩进被搞砸了。使用二进制序列化很棘手,它不是版本容错的,除非您执行诸如应用 [NonSerialized] 属性这样的操作,以便仍然可以加载旧数据。那行得通。
-
obj.width = 100;...bf.Serialize(file, data);— 你确定吗?什么是正确的,obj或data? -
@OndrejTucny 是的,对不起,我不得不简化 sn-p。但问题是一样的。
-
@HansPassant:属性一直是类的一部分,我只是有奇怪的缩进倾向。
-
嗯,值得一试。没有其他任何东西可以解释它:)
标签: c# serialization unity3d