Unity 資料 序列化和反序列化 通用方法
阿新 • • 發佈:2019-02-07
將下面的指令碼掛到任意物體
using UnityEngine; using System.Collections.Generic; using System.IO; using System.Linq; using System.Xml.Serialization; public class SerializeTest : MonoBehaviour { void Start() { List<Information> serList = new List<Information>(); string path = @"Test.xml"; //賦值 for (int i = 0; i < 5; i++) { serList.Add(new Information("名字" + i, 20 + i)); } XMLSerialize(serList, path); List<Information> serTest = XMLDeserialize<List<Information>>(path); //輸出返回的值 foreach (var temp in serTest) { Debug.Log(temp.name); Debug.Log(temp.age); } } //序列化 void XMLSerialize<T>(T obj, string path) { XmlSerializer xs = new XmlSerializer(typeof (T)); Stream fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite); xs.Serialize(fs, obj); fs.Flush(); fs.Close(); fs.Dispose(); } //反序列化 T XMLDeserialize<T>(string path) { XmlSerializer xs = new XmlSerializer(typeof (T)); Stream fs = new FileStream(path, FileMode.Open, FileAccess.ReadWrite); T serTest = (T)xs.Deserialize(fs); fs.Flush(); fs.Close(); fs.Dispose(); return serTest; } } [XmlType("人員資訊")] public class Information { [XmlAttribute("名字")] public string name; [XmlAttribute("年齡")] public int age; public Information(string name, int age) { this.name = name; this.age = age; } //必須要有 public Information(){ } }