实例场景

点击Save按钮后,查看保存的文件

点击Load按钮后加载文档数据

Json介绍https://www.json.org/json-zh.htmlUnity中自带的JsonUtility可以将可序列化对象与Json格式相互转换。

将对象转为可序列化对象需要添加[SerializeField],且为public,然后才可以被转为Json格式。

JsonUtility内部API

JsonUtility.ToJson将object对象转为Json格式

//两种重载
public static string ToJson(object obj);
public static string ToJson(object obj, bool prettyPrint);//obj为被转换为Json格式的对象
//prettyPrint为是否将输出的Json文本转为适合阅读的格式,默认false,尽量不选true,对性能有影响
//返回值为Json格式的string数据

JsonUtility.FromJson将Json格式转为object格式

public static T FromJson<T>(string json);//T为泛型,代各类数据
//json为json格式的数据
//返回值为某格式的对象

JsonUtility.FromJsonOverwrite通过读取对象的 JSON 表示形式覆盖其数据

public static void FromJsonOverwrite(string json, object objectToOverwrite);//json为对象的json格式
//objectToOverwrite为被重写的对象

这个方法与JsonUtility.FromJson不同在于:不产生新的对象加载Json格式,而是在已有的对象内加载Json格式,无需进行任何分配即可更新存储在类或对象中的值。

输入输出流

命名空间:using System.IO

File.WriteAllText 写入文件

public static void WriteAllText (string path, string ?contents);//path:文件路径
//contents:文件内容

path一般指定为:Application.persistentDataPath,避免平台不同发生错误

该值是目录路径;此目录中可以存储每次运行要保留的数据。在 iOS 和 Android 上发布时,persistentDataPath 指向设备上的公共目录。应用程序更新不会擦除此位置中的文件。用户仍然可以直接擦除这些文件。

如果文件已经存在,则会将第二次输入的内容覆盖到原文件中,不会创建新文件。

File.ReadAllText 读取文件

public static string ReadAllText (string path);//path:文件路径
//返回值为json格式的字符串

File.ReadAllText 读取文件

public static void ReadAllText (string path);

try—catch语句 

源码

PlayerSystem

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class PlayerSystem : MonoBehaviour
{public List<Text> text = new List<Text>();[SerializeField] string playerName;[SerializeField] string playerMoney;[SerializeField] string playerLevel;[SerializeField] string playerScore;const string PLAYER_FILE_NAME = "playerFile";void  Update() {text[0].text = playerName;text[1].text = playerMoney;text[2].text = playerLevel;text[3].text = playerScore;}public void Save(){var player = new Player();player.playerName = playerName;player.playerMoney = playerMoney;player.playerLevel = playerLevel;player.playerScore = playerScore;SaveFile.SaveByJson(PLAYER_FILE_NAME,player);}public void Load(){Player savePlayer = SaveFile.LoadFromJson<Player>(PLAYER_FILE_NAME);playerName = savePlayer.playerName;playerMoney = savePlayer.playerMoney;playerLevel = savePlayer.playerLevel;playerScore = savePlayer.playerScore;}[UnityEditor.MenuItem("Developer/Delete Player Prefabs")]public static void DeletePlayerSavaFiles(){SaveFile.DeleteSaveFile(PLAYER_FILE_NAME);}[SerializeField] class Player{public string playerName;public string playerMoney;public string playerLevel;public string playerScore;}
}

SaveSystem

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;public class SaveFile
{//存储文件public static void SaveByJson(string fileName,object data){var json = JsonUtility.ToJson(data);var path = Path.Combine(Application.persistentDataPath,fileName);try{File.WriteAllText(path,json);Debug.Log("存储成功");}catch(System.Exception e){Debug.Log("存储失败");}}//加载文件public static T LoadFromJson<T>(string fileName){var path = Path.Combine(Application.persistentDataPath,fileName);try{var json = File.ReadAllText(path);var data = JsonUtility.FromJson<T>(json);Debug.Log("读取成功");return data;}catch(System.Exception e){Debug.Log("读取失败");return default;}}//删除文件public static void DeleteSaveFile(string fileName){var path = Path.Combine(Application.persistentDataPath,fileName);try{File.Delete(path);Debug.Log("删除成功");}catch(System.Exception e){Debug.Log("删除失败");}}
}

Unity存档系统——Json格式的文件相关推荐

  1. [Unity存档系统]简单介绍Unity常见存档系统二JSON以及使用方法

    学习目标: 如果你和我同样苦恼于游戏相关的数据怎么存储与读取,那么不妨看看这个up主有关Unity存档系统的教程.[Unity] 存档系统 Part 1 | PlayerPrefs | Unity初学 ...

  2. Java 读写json格式的文件方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 一.要解决这个问题首先要知道json格式是什么? JSON格式: 比如学生有学号,姓名,性别等. 用json表示则为: {&q ...

  3. JSON格式的文件转换对象存入数据库

    JSON文件中的格式 [{"word": "嗄","oldword": "嗄","strokes": ...

  4. 抓取国家统计局网站上的最新县及县以上行政区划代码,并保存成json格式的文件

    源:http://www.oschina.net/code/snippet_120579_11434#18725 抓取国家统计局网站上的最新县及县以上行政区划代码,并保存成json格式的文件 可用于为 ...

  5. java读写json格式的文件方法详解.txt,并批量存储进redis

    捐躯赴国难,视死忽如归.恸哭六军俱缟素,冲冠一怒为红颜.君子坦荡荡,小人长戚戚.风日晴和人意好,夕阳箫鼓几船归.民为贵,社稷次之,君为轻.Java 读写json格式的文件方法详解 文章录入:7747. ...

  6. 新手向 使用C#自带方法制作unity存档系统(无插件)

    纯原创,自制 本人还是个在校的高中生,能力不精如果有漏洞欢迎指出 先放出我们示范项目的样子 演示项目工程文件下载 后面会在B站发详细的视频教程(所以文章之后肯会改) 嫌麻烦的直接复制到项目里就可以用哦 ...

  7. Python之基础详解(八):必备,以制作交易收盘价走趋图为例,来可视化处理json格式的文件

    在这里,我们将会用json模块来处理json格式文件.Pygal提供了一个适合初学者使用的绘图工具,我们在这里将使用它来对收盘价数据进行可视化,以帮助我们掌握基础技能.(本文所需要的文件都在资源中,记 ...

  8. java生成json格式的文件

    /*** 生成.json格式文件*/public static boolean createJsonFile(String jsonString, String filePath, String fi ...

  9. 将xls表格文件转为xml文件以及json格式的文件,支持2010xls解析

    项目需求,要通过数据库将数据以xls文件格式导出.直接解析xls的文件是没法解析的,所以需要通过解析成xml或者json格式文件后进一步处理.2003版本的Excel有65536的限制.搞了个java ...

最新文章

  1. Winform中实现右下角Popuo弹窗提醒效果(附代码下载)
  2. Quick Search Articles in My Blog
  3. java对象流定义_Java 对象流的用法,将自定义类数组写入文件中
  4. mysql数据库主要用来做什么的_水晶头骨用来做什么的?
  5. php js 比较,PHP与JS的比较
  6. 大学英语计算机开学考试试题,2018年全国大学英语四级考试阅读理解试题:学习计算机...
  7. Mongoose源码分析之--简单的服务器搭建(C语言)
  8. 我的.emacs(Ubuntu版)
  9. html图片轮播15个自动,15个超强的jQuery/HTML5图片轮播插件
  10. [2021江西省赛高校组]wp
  11. PAT乙级 打印沙漏(20)
  12. 计算机网络有哪些分类方式,计算机网络有哪些分类?
  13. LaTeX 数学公式和符号
  14. 浏览器输入网址发生了什么?
  15. 用 visio 2013 绘制倾斜立方体
  16. 网络变压器作用(续):带中间抽头的两个线圈组成的网络变压器及其作用
  17. 解决centos 个别命令command not found 每次打开虚拟机都要sourc .bashrc
  18. HDU 1051 Wooden Sticks 造木棍【贪心】
  19. 麦克斯韦方程组微分形式
  20. 犀牛书第七版学习笔记:数据类型与结构-数字

热门文章

  1. linux用飞信发短信
  2. android QCN备份还原方法
  3. 前后加编码_如何不加思考地编码?
  4. 如何制作 TSP 艺术?
  5. NPDP日常记忆知识点一
  6. html行间距属性,css行间距属性
  7. Javafx+MySQL 学生成绩管理系统
  8. Eclipse+Java+SSM+Easyui实现网上考试系统
  9. 利用Photoshop生成Sprite sheet
  10. 狂神说docker(最全笔记)