精华内容
下载资源
问答
  • 游戏存档

    2018-08-19 20:53:36
    参考:...   //需要序列化的数据存储类 [System.Serializable] public class Save  二进制的存档方法 using System.IO; using System.Runtime.Serialization.Formatters.Bina...

    参考:https://blog.csdn.net/y1196645376/article/details/52541882

     

    //需要序列化的数据存储类

    [System.Serializable]
    public class Save 

    二进制的存档方法

    using System.IO;
    using System.Runtime.Serialization.Formatters.Binary;

     public void SaveByBin()
        {
            //序列化过程 (save对象转换为字节流)

            //创建游戏对象并保存在save中
            Save save = CreateSaveGo();
            //创建一个二进制格式化程序
            BinaryFormatter bf = new BinaryFormatter();
            //创建一个文件流
            FileStream fileStream = File.Create(Application.dataPath + "/StreamingFile" + "/byBin.txt");
            //用二进制格式化程序来序列化save对象,参数:创建的文件流和需要序列化的对象
            bf.Serialize(fileStream, save);
            //关闭流
            fileStream.Close();
        }

     

     public void LoadByBin()
        {
            if (File.Exists(Application.dataPath + "/StreamingFile" + "/byBin.txt"))
            {
                //反序列化过程
                //创建一个二进制格式化程序
                BinaryFormatter bf = new BinaryFormatter();
                //打开一个文件流
                FileStream fileStream = File.Open(Application.dataPath + "/StreamingFile" + "/byBin.txt", FileMode.Open);
                //调用程序的反序列化方法,将文件流转化为save对象
                Save save = (Save)bf.Deserialize(fileStream);
                //关闭文件流
                fileStream.Close();
                //解码
               // SetGame(save); UIManager.uiManager.ShowMessage("加载成功");
            }
            else
                UIManager.uiManager.ShowMessage("文件不存在");
        }

    使用json保存,这个方法需要引入LitJson 库文件

     #region json方法存档和读档
        public void SaveByJson()
        {
            Save save = CreateSaveGo();
            string filePath = Application.dataPath + "/StreamingFile" + "/byJson.json";
            //将save对象转换为json类型的字符串
            string saveJsonStr = JsonMapper.ToJson(save);
            //将字符串写入到文件中
            //创建一个streamWriter
            StreamWriter sw = new StreamWriter(filePath);
            //并写入
            sw.Write(saveJsonStr);
            //关闭
            sw.Close();
            UIManager.uiManager.ShowMessage("保存成功");
        }

      public void LoadByJson()
        {
            string filePath= Application.dataPath + "/StreamingFile" + "/byJson.json";
            if (File.Exists(filePath))
            {
                //读取流
                StreamReader sr = new StreamReader(filePath);
                //将读取到的流流赋值给jsonStr
                string jsonStr = sr.ReadToEnd();
                sr.Close();
                //将jsonStr转化为save对象
                Save save = JsonMapper.ToObject<Save>(jsonStr);
                //将读档信息转化为游戏状态
                SetGame(save);
            }else
            {
                UIManager.uiManager.ShowMessage("存档文件不存在");
            }
        }

     

    XML方法存储游戏

    创建xml文件,创建xml元素,可以设置元素的值比如名字,附加结点。结点可以设置结点中的值InnerText.

    using System.Xml;

     

     

    #region xml方法存档和读档
        public void SaveByXml()
        {
            Save save = CreateSaveGo();
            string filePath = Application.dataPath + "/StreamingFile" + "/byXLM.txt";
            //创建XML文档
            XmlDocument xmlDoc = new XmlDocument();
            //创建根节点 最上层结点
            XmlElement root = xmlDoc.CreateElement("save");
            //设置根节点中的值
            root.SetAttribute("name","saveFile1");
            XmlElement target;
            XmlElement targetPosition;
            XmlElement monsterType;
            //遍历save,将save对象中的数据写入xml文件中
            for(int i = 0; i < save.livingTargetPositions.Count; i++)
            {
                //赋值
                target = xmlDoc.CreateElement("target");
                targetPosition = xmlDoc.CreateElement("targetPosition");
                targetPosition.InnerText=save.livingTargetPositions[i].ToString();
                monsterType = xmlDoc.CreateElement("monsterType");
                monsterType.InnerText = save.livingMonsterType[i].ToString();
                //附加至根节点,设置层级关系
                target.AppendChild(targetPosition);
                target.AppendChild(monsterType);
                root.AppendChild(target);
            }
            //定义与赋值
            XmlElement shootNum = xmlDoc.CreateElement("shootNum");
            shootNum.InnerText = save.shootNum.ToString();
            XmlElement score = xmlDoc.CreateElement("score");
            score.InnerText = save.score.ToString();
            //添加到根节点中
            root.AppendChild(shootNum);
            root.AppendChild(score);
            //根节点附加到xml文件中
            //文件层级关系 xmlDoc-root-(shootNum,score,target-(targetPosition,monsterType))
            xmlDoc.AppendChild(root);
            //保存xml文件到指定路劲
            xmlDoc.Save(filePath);
            if (File.Exists(filePath))
            {
                UIManager.uiManager.ShowMessage("保存成功");
            }
        }

     

     public void LoadByXml()
        {
            string filePath= Application.dataPath + "/StreamingFile" + "/byXLM.txt";
            if (File.Exists(filePath))
            {
                Save save = new Save();
                //加载xml文档
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(filePath);
                //通过结点名称来获取元素,结果为xmlNodeList类型
                XmlNodeList targets = xmlDoc.GetElementsByTagName("target");
                //遍历所有的target结点,并获取它的子节点和innertext
                if (targets.Count != 0)
                {
                    foreach(XmlNode target in targets)
                    {
                        //读取子节点
                       XmlNode targetposition= target.ChildNodes[0];
                        int targetpositionIndex = int.Parse(targetposition.InnerText);
                        save.livingTargetPositions.Add(targetpositionIndex);

                        XmlNode monsterType = target.ChildNodes[1];
                        int monsterTypeIndex = int.Parse(monsterType.InnerText);
                        save.livingMonsterType.Add(monsterTypeIndex);
                    }
                }
                //只能获取到xmlNodeList中
                XmlNodeList shootNumNodes = xmlDoc.GetElementsByTagName("shootNum");
                int shootNum = int.Parse(shootNumNodes[0].InnerText);
                save.shootNum = shootNum;

                XmlNodeList scoreNodes = xmlDoc.GetElementsByTagName("score");
                int score = int.Parse(scoreNodes[0].InnerText);
                save.score = score;
                SetGame(save);
                UIManager.uiManager.ShowMessage("");
            }
            else
            {
                UIManager.uiManager.ShowMessage("存档文件不存在");
            }
        }

    展开全文
  • 主要为大家详细介绍了Unity实现游戏存档框架,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • IOS游戏存档替换教程

    2018-05-06 14:24:14
    IOS游戏存档替换,于游戏的存档,其实可以到威锋论坛、pp论坛,甚至百度直接搜索即可,只要将存档文件下载下来,找到Documents及Library文件夹覆盖替换基本就可以了。
  • RM游戏存档修改器配置文件,rmmodify自动生成,sstm出品
  • 游戏存档管理

    2020-06-03 11:16:37
    游戏存档管理 import userData from "userData"; export default { //合并存档 mergeJSON(n, o) { let oType = Object.prototype.toString.call(o); let nType = Object.prototype.toString.call(n); if ...

    小游戏存档管理

    import userData from "userData";
    export default {
        //合并存档
        mergeJSON(n, o) {
            let oType = Object.prototype.toString.call(o);
            let nType = Object.prototype.toString.call(n);
            if (nType == '[object Object]' && oType == '[object Object]') {
                //合并属性(object)
                for (let p in n) {
                    if (n.hasOwnProperty(p) && !o.hasOwnProperty(p)) {
                        //新的有,旧的没有
                        o[p] = n[p];
                    } else if (n.hasOwnProperty(p) && (o.hasOwnProperty(p))) {
                        //两者都有
                        let oPType = Object.prototype.toString.call(o[p]);
                        let nPType = Object.prototype.toString.call(n[p]);
                        if ((nPType == '[object Object]' && oPType == '[object Object]') || (nPType == '[object Array]' && oPType == '[object Array]')) {
                            this.mergeJSON(n[p], o[p]);
                        }
                    };
                }
            } else if (nType == '[object Array]' && oType == '[object Array]') {
                //合并属性(array)
                for (let i in n) {
                    let oIType = Object.prototype.toString.call(o[i]);
                    let nIType = Object.prototype.toString.call(n[i]);
                    if ((nIType == '[object Object]' && oIType == '[object Object]') || (nIType == '[object Array]' && oIType == '[object Array]')) {
                        this.mergeJSON(n[i], o[i]);
                    }
                }
            };
            //合并属性(other)
            n = o;
            return n;
        },
        //刷新数据
        updateUserData: function (localUserData) {
            //合并对象,源对象合并到目标对象
            //Object.assign(target,sources)
            let now_ud = this.mergeJSON(userData, localUserData);
            Object.assign(userData, now_ud)
            cc.log(userData, "userData");
        },
        //读取本地数据
        load: function () {
            try {
                let localUserData = JSON.parse(cc.sys.localStorage.getItem('userData'));
                if (localUserData !== null) {
                    this.updateUserData(localUserData);
                    cc.log("使用存档");
                } else {
                    this.save();
                    //否则就初始化
                };
            } catch (err) {
                this.save();
                cc.log("报错处理");
                cc.log(err);
            }
        },
        //将缓存数据写入到本地中
        save: function () {
            let cacheUserData = userData;
            this.clear();
            cc.sys.localStorage.setItem('userData', JSON.stringify(cacheUserData));
            cc.log("已存档");
            // cc.log(JSON.stringify(userData));
        },
        //清除所有数据
        clear: function () {
            cc.sys.localStorage.removeItem('userData');
            // cc.log("清除本地所有数据");
        },
    
    };
    
    
    展开全文
  • Unity PlayerPrefs 游戏存档

    千次阅读 2017-09-17 12:22:57
    PlayerPrefs 游戏存档俗称玩家偏好。 工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值。类似于ios中的默认偏好设置(NSUserDefaults)用法类似Windows 在Windows...

    PlayerPrefs 游戏存档俗称玩家偏好。 工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值。类似于ios中的默认偏好设置(NSUserDefaults)用法类似

    Windows
    在Windows平台下,PlayerPrefs被存储在注册表的 HKEY_CURRENT_USER\Software[company name][product name]键下(打开“运行”输入regedit打开注册表),其中company name和product name名是在Project Setting中设置。

    Linux
    在Linux,PlayerPrefs是储存在~/.config/unity3d/[CompanyName]/[ProductName]。其中CompanyName和ProductName名是在Project Setting中设置

    WebPlayer 网页
    在网页平台,PlayerPrefs是储存在二进制文件,看下面的对应的各平台位置:

    Mac OS X: ~/Library/Preferences/Unity/WebPlayerPrefs

    Windows: %APPDATA%\Unity\WebPlayerPrefs

    一个游戏存档文件对应一个web播放器URL并且文件大小被限制为1MB。如果超出这个限制,SetInt、SetFloat和SetString将不会存储值并抛出一个PlayerPrefsException异常。

    存档类型可以有float,int,string 三种类型,每种类型分别对应着Set,Get两种方法,下面以float类型进行举例,int,string同理,,,

    SetInt(key:string, Value:int) 返回值 void
    设置由key确定的偏好值。
    参数:
    第一个参数表示存储数据的名称
    第二的参数表示具体存储的数值。

       public class playerDemo: MonoBehaviour{  
           public void Start(){  
               PlayerPrefs.SetInt("Score", 10);  
           }  
       }  

    GetInt(key:string,defaultValue:int=0) 返回值 int
    如果存在,返回偏好文件中key对应的值。

    public class playerDemo: MonoBehaviour{  
       public void Start(){  
          Debug.log(PlayerPrefs.GetInt("Score"));  
       }  
    }  

    PlayerPrefs 还有以下几个方法:

    public static bool HasKey(string key); 使用所有键
    如果key在偏好中存在,返回true。

    public static void DeleteKey(string key); 删除键
    从偏好中删除key和它对应的值。

    public static void DeleteAll(); 删除所有键
    从游戏存档中删除所有key。请谨慎使用。

    public static void Save(); 保存
    写入所有修改参数到硬盘。 注意:在Windows Store和Windows Phone 8.1的游戏存档保存是在应用程序暂定时,因此没有应用程序退出事件。

    展开全文
  • PlayerPrefs 游戏存档 Description 描述 在游戏会话中储存和访问游戏存档。这个是持久化数据储存,比如保存游戏记录。 Editor/Standalone 编辑器 / 桌面平台 Mac OS 在Mac OS X上...

    PlayerPrefs 游戏存档

    Description 描述

    在游戏会话中储存和访问游戏存档。这个是持久化数据储存,比如保存游戏记录。

    Editor/Standalone 编辑器 / 桌面平台

    Mac OS

    在Mac OS X上PlayerPrefs是存储在~/Library/Preferences文件夹,名为unity.[company name].[product name].plist,其中company name和product name名是在Project Setting中设置,.plist文件可用于编辑器和桌面平台运行。 (打开Find,按住Option键,点击“前往 →“资源库”,就可以找到Preferences文件夹。)

    Windows

    在Windows平台下,PlayerPrefs被存储在注册表的 HKEY_CURRENT_USER\Software\[company name]\[product name]键下(打开“运行”输入regedit打开注册表),其中company name和product name名是在Project Setting中设置。

    Linux

    在Linux,PlayerPrefs是储存在~/.config/unity3d/[CompanyName]/[ProductName]。其中CompanyName和ProductName名是在Project Setting中设置

    Windows Store

    在Windows Store,PlayerPrefs是储存在%userprofile%\AppData\Local\Packages\[ProductPackageId]>\LocalState\playerprefs.dat。

    Windows Phone

    在Windows Phone 8,PlayerPrefs是储存在应用自己的文件夹,参见:Windows.Directory.localFolder

    WebPlayer 网页

    在网页平台,PlayerPrefs是储存在二进制文件,看下面的对应的各平台位置:

    Mac OS X: ~/Library/Preferences/Unity/WebPlayerPrefs

    Windows: %APPDATA%\Unity\WebPlayerPrefs

    一个游戏存档文件对应一个web播放器URL并且文件大小被限制为1MB。如果超出这个限制,SetInt、SetFloat和SetString将不会存储值并抛出一个PlayerPrefsException异常。

    Static Functions 静态函数

    DeleteAll Removes all keys and values from the preferences. Use with caution. 
    从游戏存档中删除所有key。请谨慎使用。
    DeleteKey Removes key and its corresponding value from the preferences. 
    从游戏存档中删除key和它对应的值。
    GetFloat Returns the value corresponding to key in the preference file if it exists. 
    如果存在,返回游戏存档文件中key对应的浮点数值。
    GetInt Returns the value corresponding to key in the preference file if it exists. 
    如果存在,返回游戏存档文件中key对应的整数值。
    GetString Returns the value corresponding to key in the preference file if it exists. 
    如果存在,返回游戏存档文件中key对应的字符串值。
    HasKey Returns true if key exists in the preferences. 
    如果key在游戏存档中存在,返回true。
    Save Writes all modified preferences to disk. 
    写入所有修改参数到硬盘。
    SetFloat Sets the value of the preference identified by key. 
    设置由key确定的浮点数值。
    SetInt Sets the value of the preference identified by key. 
    设置由key键确定的整数值。
    SetString Sets the value of the preference identified by key. 
    设置由key确定的字符串值。

    展开全文
  • PlayerPrefs 游戏存档

    千次阅读 2015-04-14 19:27:18
    游戏存档,持久化储存,玩家游戏记录以数据形式存在PlayerPrefs中的。 原理: 在Mac OS X上PlayerPrefs存储在~/Library/PlayerPrefs文件夹,名为unity.[company name].[product name].plist,这里company和...
  • 注意:使用软件前请先手动备份你C盘原有的游戏存档文件。 比如:植物大战僵尸的存档目录是“C:\ProgramData\PopCap Games”,手动将这个目录复制到你的游戏目录里(比如“E:\Games\植物大战僵尸2中文版”),在游戏...
  • flash游戏存档查找工具FlashCookiesView(汉化版)
  • 功能在游戏会话中储存和访问游戏存档。这个是持久化数据储存,比如保存游戏记录。静态函数DeleteAllRemoves all keys and values from the preferences. Use with caution.从游戏存档中删除所有key。请谨慎使用。...
  • Unity中游戏存档方式

    千次阅读 多人点赞 2015-11-27 23:35:11
    游戏存档在Unity中游戏存档有如下四种方式: PlayerPrefs c#序列化 XML序列化 Json 游戏存档是老大之前吩咐要做的,一开始我问可以用PlayerPrefs不呢,锐哥老大回答说不可以,用Unity自带的会有很多的限制。那好吧,...
  • 13--游戏存档

    2019-09-28 08:09:30
    13--游戏存档 保存游戏中的数据时游戏中常用的功能,Cocos2DX为我们提供CCUserDefault类。该类使用xml文件存储数据,并提供几个基本类型的存储接口。 //根据key获取指定的值,重载版本在没有读取到值返回...
  • Unity游戏存档的四种方式

    万次阅读 多人点赞 2018-04-10 21:52:18
    在Unity中游戏存档有如下四种方式: PlayerPrefs c#序列化 XML序列化 Json 游戏存档是老大之前吩咐要做的,一开始我问可以用PlayerPrefs不呢,锐哥老大回答说不可以,用Unity自带的会有很多的限制。那好吧,...
  • 原标题:Unity教程 | 自制简易的游戏存档系统本文将为大家分享如何在Unity中实现简单的游戏存档系统,其中不会包含太多实际的代码,仅介绍在制作过程中需要考虑与解决的问题。该系统由一个学生团队为他们的首款商业...
  • 游戏存档的功能和重要性不需要过多叙述,实现的方法也很多样。 对于Unity来讲,最简单的就是用PlayerPrefs来搞。但是就因为简单,所以能实现的功能也比较少。目前PlayerPrefs存些Int、String显然是不够的。 所以...
  • 按快捷键备份游戏存档 使用pynput监听按键 使用pygame的混合器播放声音 # -*- coding:utf-8 -*- from pynput import keyboard import pygame import os save_sound = r'hasaki.mp3' load_sound = r'面对疾风吧.mp3'...
  • 关于游戏存档之PlayerPrefs 一、PlayerPres的数据存在注册表中(这里针对的是Windows操作系统,Mac OS、Linux等其他系统具体可以查看 圣典手册) 二、PlayerPrefs存档操作具体如下: 1)使用PlayerPrefs.SetInt...
  • Unity3D 游戏存档插件 EasySave2 v2.6.3
  • 在游戏会话中储存和访问游戏存档。这个是持久化数据储存,比如保存游戏记录。我的理解是通过某个特殊的标签来保存在本地,而且该标签为key的意思,初始值不用赋值。在游戏开发中较为实用。暂时用到了SetInt(string ...
  • 都知道 XML 和JSON 是 游戏存档 的存储 的标配。 那么 .asset能不能 作为 存档 存储 游戏 数据呢。 本文就.asset能不能 作为 存档 存储 游戏 数据 进行探讨。 .asset不能作为游戏存档来使用。因为再次启动.exe的...
  • Unity Manual之PlayerPrefs 游戏存档 Description 描述 在游戏会话中储存和访问游戏存档。这个是持久化数据储存,比如保存游戏记录。 Editor/Standalone 编辑器 / 桌面平台 Mac OS 在Mac OS X上...
  • 手机rpg游戏存档在哪 您是否曾经考虑过尝试《龙与地下城》,但不知道如何开始? 您是否在年轻时玩过Traveler,并一直在考虑重返业余爱好? 您是否对角色扮演游戏(RPG)感到好奇,但不确定是否要玩角色扮演游戏? 您...
  • Unity3D——PlayerPrefs 游戏存档

    千次阅读 2016-10-24 10:09:20
    在游戏会话中储存和访问游戏存档。这个是持久化数据储存,比如保存游戏记录。 Mac OS在Mac OS X上PlayerPrefs是存储在~/Library/Preferences文件夹,名为unity.[company name].[product name].plist
  • 对于游戏存档除了XML,Json,Sqlite,unity提供了一个类可以用来存储数据,那就是PlayerPrefs。 这个类对应的API如下 Class Functions类函数 SetInt Sets the value of the preference identified by ...
  • Cocos2d-x 游戏存档

    2016-01-10 11:39:00
    游戏存档功能能够保存游戏中数据。让玩家游戏能够延续。 单机游戏更为重要。而CCUserDefault能够作轻量级数据库使用,用来存储数据,支持数据类型bool,int, float, double, string. 存储数据 CCUserDefault::...
  • 游戏存档实例

    2019-07-27 10:26:50
    1.创建Sava类 [System.Serializable] public class Save { public List&amp;amp;amp;amp;amp;amp;lt;int&amp;amp;amp;amp;amp;amp;gt; livingMonsterPostions=new List&... public List
  • steam游戏存档迁移

    2019-10-01 19:31:03
    之前玩的盗版guacamelee等着打折入正,今天入了,不想重新打了,就把存档从盗版迁移了一下。 盗版的目录是F:\Guacamelee\Profile\ALI213\Saves,该目录下又一个SAVE.DAT是储存游戏数据的文件。 steam正版的游戏...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,331
精华内容 532
关键字:

游戏存档