C#对象的序列化与反序列化
从网上下载protobuf-net.dll并放入Assets\Plugins目录下。
示例一
Test.cs
using UnityEngine; using System; using System.IO; using System.Collections; using ProtoBuf; public class Test : MonoBehaviour { void Start () { Student student = new Student(); student.Id = 100; student.Name = "令狐冲"; student.Age = 17; student.Sex = 1; //把对象序列化,并存放到本地文件。 string path = Application.persistentDataPath + "/student.bin"; using (Stream file = File.Create(path)) { Serializer.Serialize<Student>(file, student); file.Close(); } //把数据从文件中读取出来,并反序列化。 using (Stream file = File.OpenRead(path)) { Student student1 = Serializer.Deserialize<Student>(file); Debug.Log("Deserialize: " + student1.ToString()); } } }
Student.cs
using ProtoBuf; [ProtoContract] public class Student { [ProtoMember(1)] public int Id { get; set; } [ProtoMember(2)] public string Name { get; set; } [ProtoMember(3)] public int Age { get; set; } [ProtoMember(4)] public int Sex { get; set; } public override string ToString() { return string.Format("Id={0}, Name={1}, Age={2}, Sex={3}", Id, Name, Age, Sex); } }
运行测试