美文网首页
【Unity】存档器(二进制形式)

【Unity】存档器(二进制形式)

作者: 真诚的狗子 | 来源:发表于2023-03-01 21:22 被阅读0次

简书贴代码太难了,难道放弃技术博客了吗?

这个代码需要自己创建数据类和StreamingAssets目录,代码如下:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary;

public class SaveLoadUtil

{

    // 这两个命名空间需添加

    // 二进制方法:存档和读档

    public static void SaveByBin(Demo1SaveData save)

    {

        // 序列化过程 (将Save 对象转换为字节流)

        // 创建一个二进制格式化程序

        BinaryFormatter bf = new BinaryFormatter();

        // 创建一个文件流

        FileStream fileStream = File.Create(Application.dataPath + "/StreamingAssets" + "/byBin.txt");

        // 用二进制格式化程序的序列化方法 来 序列化Save对象

        //      参数:创建的文件流和需要序列化的对象

        bf.Serialize(fileStream, save);

        // 关闭流

        fileStream.Close();

        // 如果文件存在,则显示保存成功

        if (File.Exists(Application.dataPath + "/StreamingAssets" + "/byBin.txt"))

        {

            Debug.Log("Save success!");

        }

    }

    public static Demo1SaveData LoadByBin()

    {

        if (File.Exists(Application.dataPath + "/StreamingAssets" + "/byBin.txt"))

        {

            // 反序列化过程

            // 创建一个二进制格式化程序

            BinaryFormatter bf = new BinaryFormatter();

            // 打开一个文件流

            FileStream fileStream = File.Open(Application.dataPath + "/StreamingAssets"

    + "/byBin.txt", FileMode.Open);

            // 调用格式化程序的反序列化方法,将文件流转换为Save 对象

            Demo1SaveData save = (Demo1SaveData)bf.Deserialize(fileStream);

            // 关闭文件流

            fileStream.Close();

            return save;

        }

        else

        {

            Debug.Log("存档文件不存在!");

            return null;

        }

    }

}

https://blog.csdn.net/qq_20255239/article/details/127528132

相关文章

网友评论

      本文标题:【Unity】存档器(二进制形式)

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