对类进行序列化,然后返回状态

本文关键字:然后 返回 状态 序列化 | 更新日期: 2023-09-27 18:10:58

如果我有一个类,我把它设为Serializable,因为我想保存状态。我怎样才能恢复那种状态?

[Serializable]
public class MyObject 
{
  public int a = 5;
}
什么是[Serializable],什么时候我应该使用它?

对类进行序列化,然后返回状态

如果你想在运行时更改和保存状态,使用带有Serializable属性的类是错误的选择。

我的猜测是,PlayerPrefs将是足够好的你正在寻找什么。你可以这样做:

public static string playerPrefKey_a = "a_value";
public static int a
{
    get { return PlayerPrefs.GetInt(playerPrefKey_a); }
    set { PlayerPrefs.SetInt(playerPrefKey_a, value); }
}
    /// <summary>
    /// (extension method) Deserializes a byte array into an object.
    /// </summary>
    public static T DeserializeToObject<T>(this byte[] buffer) where T : class
    {
        using (var stream = new MemoryStream(buffer))
        {
            var formatter = new BinaryFormatter();
            stream.Seek(0, SeekOrigin.Begin);
            return (T)formatter.Deserialize(stream);
        }
    }