第一步:定义一个可序列化的类
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml.Serialization;
[System.Serializable]
public class TestSerilize
{
[XmlAttribute("Id")]
public int Id
{
get;
set;
}
[XmlAttribute("Name")]
public string Name
{
get;
set;
}
[XmlElement("List")]
public List<int> List
{
get;
set;
}
}第二步 序列化
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Xml.Serialization;
public class ResourceTest : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
SerilizeTist();
}
// Update is called once per frame
void SerilizeTist()
{
TestSerilize testSerilize = new TestSerilize();
testSerilize.Id = 1;
testSerilize.Name = "测试";
testSerilize.List = new List<int>();
testSerilize.List.Add(2);
testSerilize.List.Add(3);
XmlSerilize(testSerilize);
}
//序列化
void XmlSerilize(TestSerilize testSerilize)
{
//文件流
FileStream fileStream = new FileStream(Application.dataPath + "/test.xml", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
//写入流文件
StreamWriter sw = new StreamWriter(fileStream, System.Text.Encoding.UTF8);
//序列化 获取类型
XmlSerializer xml = new XmlSerializer(testSerilize.GetType());
xml.Serialize(sw, testSerilize);
sw.Close();
fileStream.Close();
}
第三部 :反序列化
//反序列化
TestSerilize XmlDeSerlize()
{
FileStream fs = new FileStream(Application.dataPath + “/test.xml”, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
XmlSerializer xs = new XmlSerializer(typeof(TestSerilize));
//反向序列化
TestSerilize testSerilize = (TestSerilize)xs.Deserialize(fs);
fs.Close();
return testSerilize;
}
void DeSerilizerTest()
{
TestSerilize testSerilize = XmlDeSerlize();
Debug.Log(testSerilize.Id + " " + testSerilize.Name);
if (testSerilize != null)
{
foreach (int a in testSerilize.List)
{
Debug.Log(a);
}
}
}
反序列化的时候千万不要忘记在 start 中调用DeSerilizerTest方法哦