unity3d 序列化Serializable

from:
http://www.jianshu.com/p/af878d967c84

在脚本使用只需要序列化的类名前面加上 [Serializable]即可,加上System命名空间。

[Serializable]
class Animal
{
   public string name;
}

class MyScript : MonoBehaviour
{
      public Animal[] animals;
}

这个写法可以把类中公共变量做序列化,私有变量需要序列化需要加上[SerializeField],公共变量不想被序列化加上 [NonSerializable]就可以了。当然静态(static),常量(const),只读(readonly)的变量,抽象类这些是不能被序列化的。

二进制序列化简单例子

数据类:

[Serializable]
public class MyTest
{
    public int age;
    public string name;

    public override string ToString()
    {
        return String.Format("Age: {0}, Name: {1}", age, name);
    }
}

操作:

   public void OnGUI()
   {
    if (GUILayout.Button("Save"))
    {
        var file = File.Open(Application.dataPath + "/myTest.dat", FileMode.OpenOrCreate);
        var bf = new BinaryFormatter();
        var myTest = new MyTest {age = 2, name = "ben"};
        bf.Serialize(file, myTest);
        file.Close();
    }
    if (GUILayout.Button("Load"))
    {
        if (File.Exists(Application.dataPath + "/myTest.dat"))
        {
            var file = File.Open(Application.dataPath + "/myTest.dat", FileMode.Open);
            var bf = new BinaryFormatter();
            var myTest = (MyTest) bf.Deserialize(file);
            file.Close();
            Debug.Log(myTest.ToString());
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容