首页 > 其他分享 >Unity游戏存档读档的几种方式

Unity游戏存档读档的几种方式

时间:2023-07-15 11:56:15浏览次数:26  
标签:saveJson 存档 void private 读档 Unity static GameData new

1.二进制

    private static void SaveByBinary()
    {
        //创建二进制格式化程序
        BinaryFormatter bf = new BinaryFormatter();
        //创建一个文件流
        FileStream fs = File.Create(GetFilePath(SaveDataType));
        //二进制方法序列化对象
        bf.Serialize(fs, GameData);
        //关闭流
        fs.Close();
    }

    private static void LoadByBinary()
    {
        //创建二进制格式化程序
        BinaryFormatter bf = new BinaryFormatter();
        //打开一个文件流
        FileStream fs = File.Open(GetFilePath(SaveDataType), FileMode.Open);
        //二进制方法序列化对象
        GameData = (SaveData)bf.Deserialize(fs);
        //关闭流
        fs.Close();
    }

2.Json

    private static void SaveByJson()
    {
        //将SaveData对象转换成json格式的字符串
        string _saveJson = JsonMapper.ToJson(GameData);
        //将字符串写到文件中
        StreamWriter sw = new StreamWriter(GetFilePath(SaveDataType));
        //写入
        sw.Write(_saveJson);
        //关闭流
        sw.Close();
    }

    private static void LoadByJson()
    {
        //创建流读取文件
        StreamReader sr = new StreamReader(GetFilePath(SaveDataType));
        //将读到的流转换成字符串
        string _saveJson = sr.ReadToEnd();
        GameData = JsonMapper.ToObject<SaveData>(_saveJson);
        //关闭流
        sr.Close();
    }

3.Xml

过于繁琐,仅提供大概步骤

    private static void SaveByXml()
    {
        //将SaveData对象转换成json格式的字符串
        string _saveJson = JsonMapper.ToJson(GameData);
        /*步骤
         * 1.创建xml文档 XmlDocument xmlDoc = new XmlDocument();
         * 2.创建根节点,设置根节点属性 可有可无
         * 3.创建根节点中的元素及元素中的元素,并添加到根节点中 xxx.AppendChild(elm); root.AppendChild(xxx);
         */
    }

    private static void LoadByXml()
    {
        /*步骤
         * 1.加载xml文档 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(GetFilePath(SaveDataType));
         * 2.通过节点名获取元素 XmlNodeList xxx = xmlDoc.GetElementsByTagName("xxx");
         * 3.遍历节点子节点,赋值
         */
    }

4.PlayerPrefs

    private static void SaveByPlayerPrefs()
    {
        //将SaveData对象转换成json格式的字符串
        string _saveJson = JsonMapper.ToJson(GameData);
        PlayerPrefs.SetString("SaveData", _saveJson);
        PlayerPrefs.Save();
    }

    private static void LoadByPlayerPrefs()
    {
        string _saveJson = PlayerPrefs.GetString("SaveData");
        GameData = JsonMapper.ToObject<SaveData>(_saveJson);
    }

 

 

标签:saveJson,存档,void,private,读档,Unity,static,GameData,new
From: https://www.cnblogs.com/zerobeyond/p/17555896.html

相关文章

  • Unity 协程详解
    在程序开发时,光是了解协程怎么用是远远不够的,因为当程序出现一些有关于协程的错误时,理解协程的原理就十分有必要性了。1.协程使用的一些问题我们知道如果在Unity中编写一个死循环,会造成运行游戏时整个Unity编辑器卡死,而协程函数在使用时好像是可以与Update函数并行不斥......
  • Unity下载安装包并进行安装
    项目上要做更新,还没学热更新,要做到游戏内部下载安装包并进行安装的效果,项目不采用Url转跳默认下载器的方式。Url转跳下载方式Application.OpenURL(URL);用这个转跳你的Nginx下载路径就行了,项目上不让用这种方式Unity内下载安装包Unity调用安卓安装安装包参考文章待整理......
  • 在Unity3D中使用ScriptableObject进行序列化
    ScriptableObject类型经常用于存储一些unity3d本身不可以打包的一些object,比如字符串,一些类对象等。用这个类型的子类型,则可以用BuildPipeline打包成assetbundle包供后续使用,非常方便。这样除了playerpref和c#文件读取外,另外的一种存取一些数据对象的方法1.usingUnityEngine;......
  • unity3D制作并使用Assetbundles方法
    在网页中为了控制.unity文件的大小,加速载入速度,可以把系统用到的资源制作成Assestbundles,根据需要进行动态的加载和卸载。具体作法:1、使用脚本重新定义系统菜单,添加一个制作Assetbunles的菜单命令://C#Example//Buildsanassetbundlefromtheselected......
  • Unity3D_根据不同的屏幕缩放UI(在横屏上运行竖屏软件)
    一、首先我们创建一个1080*1920分辨率的场景 效果如下二、随便添加一张UI图片三、打包出来看效果(我们发现UI显示不全,这是因为UI的尺寸任然是1080*1920,而我们的电脑是1920*1080) 四、我们在Unity中做以下设置1.选中游戏物体Canvas2.点击组件CanvasScaler上的UISc......
  • Unity3D 游戏实战开发之英雄联盟
    本次游戏项目为类dota游戏中的经典之作《英雄联盟》,向经典致敬。通过本次课程,你会学到网游开发模式、C#服务器开发、协议定制、Unity5.0新特性开发、UGUI应用、同步方案、解决问题思路、各种扩展工具的开发………! 演示地址:www.runruncode.com/video-game/19444.html ......
  • Unity Shader 基础光照(build)
    1.光学基础1.1光源:光线由光源发出,在实时渲染中,我们通常把光源当成一个没有体积的点。用l代表光的方向,用辐照度来量化光的强度。辐照度的意思表示垂直于l的单位面积上单位时间穿过的能量。如果光于平面不垂直,则辐照度为cosS/l,S为光线与平面法线的夹角。1......
  • "Tarfs"是一个内存文件系统,它使用TAR(Tape Archive)文件格式来实现在内存中创建一个虚拟
    "Tarfs"是一个内存文件系统,它使用TAR(TapeArchive)文件格式来实现在内存中创建一个虚拟的文件系统。TAR文件格式是一种常见的存档文件格式,用于将多个文件和目录组合成单个文件。Tarfs通过将TAR文件加载到内存中,并在内存空间中模拟文件和目录结构,实现了一个简单的文件系统。它允许......
  • Burp Suite Professional / Community 2023.7 (macOS, Linux, Windows) - Web 应用安
    BurpSuiteProfessional/Community2023.7(macOS,Linux,Windows)-Web应用安全、测试和扫描BurpSuiteProfessional,Test,find,andexploitvulnerabilities.请访问原文链接:https://sysin.org/blog/burp-suite-pro-2023/,查看最新版。原创作品,转载请保留出处。作者......
  • Unity3D高级编程主程手记 学习笔记五:网络通讯
    1.C#实现TCP1.1实现所需APIC#提供了TCP的Socket连接API。一般的游戏项目我们不会使用阻塞方式连接和接收。因为我们不会让游戏卡住等待传输链接,大多数情况下我们还是会使用更加平滑的异步操作作为网络连接和收发的操作。常用的API如下:BeginConnect:开始连接Be......