Unity的Json解析<二>–写Json文件
本文章由cartzhang编写,转载请注明出处。 所有权利保留。
文章链接:http://blog.csdn.net/cartzhang/article/details/50378805
作者:cartzhang
Unity的Json解析<二>–写Json文件
上篇做了对Json格式文件读操作,
链接地址:http://blog.csdn.net/cartzhang/article/details/50373558
本章对Json的写文件,做个处理.
写文件也非常简单,把大象装冰箱一样,分三步,
创建文件,
把内容写入文件,
然后关闭文件.
内容
我们要处理的是所写的内容,我们打算写什么都Json文件中呢?
我们打算把昨天的格式继续利用,还记得GameStatus ,这个是我修改的.不过,还算好用啊.
GameStatus.cs文件代码如下:
using UnityEngine;
using System;
using System.Collections;
[Serializable]
public class GameStatus
{
public string gameName;
public string version;
public bool isStereo;
public bool isUseHardWare;
public refencenes[] statusList;
}
[Serializable]
public class refencenes
{
public refencenes()
{
name = "";
id = -1;
}
public string name;
public int id;
}
写Json格式
写JSon格式呢,我看网上都用的BinaryFormatter来处理,但是我发现这个跟昨天的问题类型,要是用BinaryFormatter的话,等保存好的Json文本打开后,各种空格,NULL和乱码.这个主要是编码格式的问题.
所以,我拒绝使用它了.
我使用File,直接WriteALLText来处理.
代码如下:
public void SaveJson()
{
string json = JsonUtility.ToJson(gameStatus);
string savePath = Application.dataPath + "/Resources/Test01.json";
File.WriteAllText(savePath, json, Encoding.UTF8);
Debug.Log("save:::" + savePath);
}
这样就完成了写文件是否很简便呢??!!!
写Json的完整代码
完整代码如下:
using UnityEngine;
using System.Collections;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
public class WriteJson : MonoBehaviour
{
public GameStatus gameStatus;
public GameObject[] objects;
void Start()
{
gameStatus = new GameStatus();
gameStatus.statusList = new refencenes[objects.Length];
gameStatus.gameName = "JSON Write Test";
for (int i = 0; i < objects.Length; i++)
{
gameStatus.statusList[i] = new refencenes();
gameStatus.statusList[i].id = i;
gameStatus.statusList[i].name = objects[i].name;
}
}
public void SaveJson()
{
string json = JsonUtility.ToJson(gameStatus);
string savePath = Application.dataPath + "/Resources/Test01.json";
File.WriteAllText(savePath, json, Encoding.UTF8);
Debug.Log("save:::" + savePath);
}
}
怎么使用?
我建立了一个测试工程.
只能如图了:
你依然可以看到昨天写文件的痕迹.
当然我们只关注写Json了.
在writeJson的属性面板上,可看到,给它的Objects拖拽了一个cube,一个Capsule,作为保存到JSon文件中的内容的一部分.
然后在运行Unity 编辑器时,按下”S”,保存键,就会在当前工程下的\Assets\Resources\中,产生了一个Test01.json的文件,这个代码中可以看到的,你可随意修改.
结果
让我们来看看我们都保持都Json文件中了什么东西.
{"gameName":"JSON Write Test","version":"","isStereo":true,"isUseHardWare":false,"statusList":[{"name":"Cube","id":0},{"name":"Capsule","id":1}]}
这就是你所保存的Json文件中的内容.
我打算上传都github,但是现在我github一直让更新,更新不成功,打不开啊!
留下地方吧!!
github一大早来更新,终于更新成功。
**
所以,源码地址:https://github.com/cartzhang/UnityJsonTest
快捷到达源码:Unity Json Test for 5.3
**
至此,Json文件的读写都搞定了.
更多
关于Json文件的使用,我打算尝试一个,能不能做个更好的配置,比如控制游戏的场景配置和游戏流程.打包后面不用修改,直接修改json 就可以创建一个完全不一样的游戏了.
这样,是不是比较蠢呢!!可能会,比较复杂吧!!
只个想法,若有兴趣,看看能不能实现一下.
———THE—–END————————–
若有问题,请随时联系!!
非常感谢!!!
Unity的Json解析<二>–写Json文件的更多相关文章
- Unity的Json解析<一>--读取Json文件
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/50373558 作者:car ...
- springMVC实现REST开发详解(补充Json解析问题以及静态文件404错误解决办法)
一.什么是REST? 符合REST约束风格和原则的应用程序或者设计就是REST 例如: /blog/1 HTTP GET =>查询id=1的blog /blog/1 HTTP DE ...
- Newtonsoft.Json解析json字符串和写json字符串
写: StringWriter sw = new StringWriter(); JsonWriter writer = new JsonWriter(sw); //如果报错则使用JsonWriter ...
- JSON解析工具-org.json使用教程
转自:http://www.open-open.com/lib/view/open1381566882614.html 一.简介 org.json是Java常用的Json解析工具,主要提供JSONO ...
- Java:JSON解析工具-org.json
一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网 ...
- JSON 解析器。JSON.stringify和JSON.parse
以前用的是JavaScript 的eval. 现在JSON 提供了JSON.stringify和JSON.parse两个函数. JSON.parse用于从一个字符串中解析出json对象. JSON. ...
- json 拼二维json数组
js声明数组 以及向数组中添加as移除json数据 JavaScript声明JSON数组的方法: //部分条件,在数据渲上数据要求是数组格式而非json数组格式,取arrayJson.dataList ...
- C# Newtonsoft.Json 解析多嵌套json 进行反序列化
[ { ", "time": "2016-09-09 12:23:33", ", "freeShipping": tru ...
- 歌词文件解析(二):LRC格式文件的绘制
通过对LRC文件的解析,可以轻松实现歌词可视化. 代码实现 函数名: paintLyrics(ByVal pBox As PictureBox, ByVal CurrentPosition As In ...
随机推荐
- jQuery练习总结(一)
第一个jQuery程序: 注意:使用jQuery时候定义单击事件使用的方法是click(function(){处理单击事件产生时所要执行的代码}) , 而JavaScript定义的单击事件则是 xx. ...
- Strtus配置Tomcat出现问题2
启动myeclipse的tomcat6.0有如下提示:The APR based Apache Tomcat Native library which allows optimal performan ...
- web.xml 中context-param元素
context-param元素含有一对参数名和参数值,用作应用的ServletContext上下文初始化参数.参数名在整个Web应用中必须是惟一的 param-name 子元素包含有参数名,而para ...
- jdk环境变量设置理解
1.系统变量→新建 JAVA_HOME 变量 . 变量值填写jdk的安装目录(本人是 E:\Java\jdk1.7.0) 2.系统变量→寻找 Path 变量→编辑 在变量值最后输入 %JAVA_HOM ...
- POJ 1091
这题确实是好. 其实是求x1*a1+x2*a2+....M*xn+1=1有解的条件.很明显,就是(a1,a2,...M)=1了.然后,可以想象,直接求有多少种,很难,所以,求出选择哪些数一起会不与M互 ...
- Hit 2255 Not Fibonacci
今天下午刚起来眼睛就比較涨,,并且还有点恶心,唉.结果一直不在状态.并且这个题太坑了.. .. 点击此处即可传送 Hit 2255 Maybe ACMers of HIT are always fon ...
- mybatis批量插入、批量删除
mybatis 批量插入 int addBatch(@Param("list")List<CustInfo> list); <insert id="ad ...
- 机器学习之线性分类器(Linear Classifiers)——肿瘤预测实例
线性分类器:一种假设特征与分类结果存在线性关系的模型.该模型通过累加计算每个维度的特征与各自权重的乘积来帮助决策. # 导入pandas与numpy工具包. import pandas as pd i ...
- 杂项-DB:DW/DWH(数据仓库)
ylbtech-杂项-DB:DW/DWH(数据仓库) 数据仓库,英文名称为Data Warehouse,可简写为DW或DWH.数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合. ...
- linux下关于IPC(进程间通信)
linux下进程间通信的主要几种方式 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许 ...