底层加载资源框架学习(二):二进制序列化

1.需要序列化的类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml.Serialization;

/// <summary>
/// 需要序列化的类
/// </summary>
[System.Serializable]
public class TestSerilize
{
    //序列化的元素
    [XmlAttribute("Id")]
    public int ID { get; set; }
    [XmlAttribute("Name")]
    public string Name { get; set; }
    [XmlElement("Skill")]
    public List<string> Skill;
}


2.序列化

  /// <summary>
    /// 初始化
    /// </summary>
    void BinarySerTest()
    {
        TestSerilize testSerilize = new TestSerilize
        {
            ID = 2,
            Name = "二进制测试",
            Skill = new List<string>()
        };
        testSerilize.Skill.Add("技能一");
        testSerilize.Skill.Add("技能二");
        SerilizeBinary(testSerilize);
    }
    /// <summary>
    /// 序列化 转换为二进制
    /// </summary>
    /// <param name="testSerilize">需要序列化的资源</param>
    void SerilizeBinary(TestSerilize testSerilize)
    {
        FileStream fileStream = new FileStream(Application.dataPath+"/TestBinary.bytes",FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite);
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        binaryFormatter.Serialize(fileStream, testSerilize);//序列化
        fileStream.Close();//关闭流文件
    }

3.反序列化

 /// <summary>
    /// 反序列化
    /// </summary>
    /// <returns>反序列化后的资源</returns>
    TestSerilize BinaryDeSerilize()
    {
        TextAsset textAsset = UnityEditor.AssetDatabase.LoadAssetAtPath<TextAsset>("Assets/TestBinary.bytes");
        MemoryStream memoryStream = new MemoryStream(textAsset.bytes);
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        TestSerilize testSerilize = (TestSerilize)binaryFormatter.Deserialize(memoryStream);
        memoryStream.Close();
        return testSerilize;
    }
    /// <summary>
    /// 查看序列化后的内容
    /// </summary>
    void DeBinarySerilizeTest()
    {
        TestSerilize testSerilize = BinaryDeSerilize();
        Debug.Log(testSerilize.ID);
        Debug.Log(testSerilize.Name);
        foreach (string skillName in testSerilize.Skill)
        {
            Debug.Log(skillName);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值