拥有的类是否需要序列化,如果它们被保存和放大在主类中加载?

时间:2017-03-31 23:01:54

标签: c# unity3d serialization

我希望能够在二进制文件中保存和加载此PlayerStats类的所有属性。 WeaponPlayerClass是否也需要序列化?

武器数组包含继承自Weapon的类,例如PistolRifle。它们还需要可序列化吗?

[Serializable]
public class PlayerStats : Saveable<PlayerStats> {
    private Weapon[] weapons;
    private PlayerClass activeClass;
    // ...
}

我已经用另一个类成功完成了这个,但是该类唯一的属性是字典。

编辑,这是我正在尝试使用的序列化,它适用于我的其他更简单的类而不是PlayerStats类:

public abstract class Saveable<T> {

    #region BinarySaveable

    public virtual void saveInstanceToBinaryFile(T instance, string fileName) {
        BinaryFormatter formatter = new BinaryFormatter ();
        Stream stream = new FileStream (fileName, FileMode.Create, FileAccess.Write, FileShare.None);
        formatter.Serialize(stream, instance);
        stream.Close ();
    }

    public virtual T loadInstanceFromBinaryFile(string fileName) {
        BinaryFormatter formatter = new BinaryFormatter ();
        Stream stream = new FileStream (fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
        T instance = (T)formatter.Deserialize (stream);
        stream.Close ();

        return instance;
    }

    #endregion

如果这是Java,我可能只能使用WriteObject(Object obj)方法。

1 个答案:

答案 0 :(得分:0)

是的,似乎他们确实这样做了。

在Unity中使用JsonUtility.ToJson(myObject);比使用自己更容易。

https://docs.unity3d.com/Manual/JSONSerialization.html