Unity 数据 序列化和反序列化 通用方法

将下面的脚本挂到任意物体

using UnityEngine;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml.Serialization;
 
public class SerializeTest : MonoBehaviour
{
    void Start()
    {
        List serList = new List();
        string path = @"Test.xml";
 
        //赋值
        for (int i = 0; i < 5; i++)
        {
            serList.Add(new Information("名字" + i, 20 + i));
        }
 
        XMLSerialize(serList, path);
        List serTest = XMLDeserialize>(path);
 
        //输出返回的值
        foreach (var temp in serTest)
        {
            Debug.Log(temp.name);
            Debug.Log(temp.age);
        }
    }
 
    //序列化
    void XMLSerialize(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(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(){ }
}


你可能感兴趣的:(Unity 数据 序列化和反序列化 通用方法)