1. 程式人生 > >Unity 資料 序列化和反序列化 通用方法

Unity 資料 序列化和反序列化 通用方法

將下面的指令碼掛到任意物體

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(){ }
}