美文网首页
Unity 二进制序列化和反序列化

Unity 二进制序列化和反序列化

作者: ___________6a1d | 来源:发表于2021-06-16 11:33 被阅读0次

二进制序列化

using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Xml.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
 
public class Test : MonoBehaviour
{
    void Start()
    {
        //SerilizeTest();
        //DeSerilizeTest();
 
        BinarySerilizeTest();
    }
 
    #region 二进制
    /// <summary>
    /// 初始化一个testSerilize,测试序列化二进制
    /// </summary>
    void BinarySerilizeTest()
    {
        TestSerilize testSerilize = new TestSerilize();
        testSerilize.ID = 1;
        testSerilize.Name = "二进制测试";
        testSerilize.GradeList = new List<int>();
        testSerilize.GradeList.Add(80);
        testSerilize.GradeList.Add(90);
 
        BinarySerilize(testSerilize);
    }
    void BinarySerilize(TestSerilize testSerilize)
    {
        //创建二进制文件流
        FileStream fileStream = new FileStream(Application.dataPath + "/Test.bytes", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
        //nameSpace:using System.Runtime.Serialization.Formatters.Binary;
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        binaryFormatter.Serialize(fileStream, testSerilize);
        //流使用后一定要记得关闭,或者使用using(){}
        fileStream.Close();
    }
    #endregion
}

找到Test.bytes文件后打开全是乱码

二进制反序列化

using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Xml.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
 
public class Test : MonoBehaviour
{
    void Start()
    {
        //SerilizeTest();
        //DeSerilizeTest();
 
        //BinarySerilizeTest();
        BinaryDeserilizeTest();
    }
 
    #region 二进制
    /// <summary>
    /// 初始化一个testSerilize,测试序列化二进制
    /// </summary>
    void BinarySerilizeTest()
    {
        TestSerilize testSerilize = new TestSerilize();
        testSerilize.ID = 1;
        testSerilize.Name = "二进制测试";
        testSerilize.GradeList = new List<int>();
        testSerilize.GradeList.Add(80);
        testSerilize.GradeList.Add(90);
 
        BinarySerilize(testSerilize);
    }
    void BinaryDeserilizeTest()
    {
        TestSerilize testSerilize = BinaryDeserilize();
 
        Debug.Log("ID====" + testSerilize.ID);
        Debug.Log("Name====" + testSerilize.Name);
        foreach (int item in testSerilize.GradeList)
        {
            Debug.Log("Grade===" + item);
        }
    }
    /// <summary>
    /// 二进制序列化
    /// </summary>
    /// <param name="testSerilize"></param>
    void BinarySerilize(TestSerilize testSerilize)
    {
        //创建二进制文件流
        FileStream fileStream = new FileStream(Application.dataPath + "/Test.bytes", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
        //nameSpace:using System.Runtime.Serialization.Formatters.Binary;
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        binaryFormatter.Serialize(fileStream, testSerilize);
        //流使用后一定要记得关闭,或者使用using(){}
        fileStream.Close();
    }
    /// <summary>
    /// 二进制反序列化
    /// </summary>
    /// <returns></returns>
    TestSerilize BinaryDeserilize()
    {
        TextAsset textAsset =UnityEditor.AssetDatabase.LoadAssetAtPath<TextAsset>("Assets/test.bytes");
        MemoryStream memoryStream = new MemoryStream(textAsset.bytes);
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        TestSerilize testSerilize = (TestSerilize)binaryFormatter.Deserialize(memoryStream);
        memoryStream.Close();
        return testSerilize;
    }
    #endregion
}

相关文章

  • Unity本地数据持久化记录存储的四种方法

    1、 Unity自身提供的PlayerPrefs 2、 BinaryFormatter 二进制序列化 3、 保存...

  • 序列化与反序列化1

    一、什么是序列化与反系列化? 序列化是将对象转换为二进制形式的数据(如Java中的byte数组),反序列化是再将二...

  • Unity&C#序列化与反序列化

    Unity与C#的序列化与反序列化

  • 无标题文章

    1、序列化和反序列化,为什么需要这个技术,解决什么问题 序列化是将数据转换成二进制串的过程,反序列化是将二进制串转...

  • 序列化和反序列化

    什么是序列化和反序列化 序列化是指将数据结构或者对象转换成二进制串的过程;反序列化则是将二进制串转换成数据结构和对...

  • 序列化

    1、序列化 序列化 将数据结构或对象转换成二进制串的过程。 2、反序列化 反序列化 将在序列化过程中所生成的二进制...

  • Android 序列化-Serializable接口和Parce

    什么是序列化? 序列化(将对象转换为二进制序列的过程) 反序列化(将二进制转化成对象) 为什么要序列化? 在底层,...

  • Android 序列化 & 反序列化

    What? 何为序列化与反序列化?序列化:将对象转化为二进制序列的过程反序列化:将二进制序列恢复为原始对象的过程 ...

  • 序列化与反序列化

    (1).NET支持对象序列化的几种方式二进制序列化:对象序列化之后是二进制形式的,通过BinaryFormatte...

  • JSON序列化的归纳整理

    JSON的序列化 (一)序列化和反序列化 序列化 : 将 字典或者数组等OC对象 转换成 二进制数据 准备发送给服...

网友评论

      本文标题:Unity 二进制序列化和反序列化

      本文链接:https://www.haomeiwen.com/subject/blpzeltx.html