本文章由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文件的更多相关文章

  1. Unity的Json解析<一>--读取Json文件

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/50373558 作者:car ...

  2. springMVC实现REST开发详解(补充Json解析问题以及静态文件404错误解决办法)

    一.什么是REST? 符合REST约束风格和原则的应用程序或者设计就是REST 例如: /blog/1   HTTP GET    =>查询id=1的blog /blog/1   HTTP DE ...

  3. Newtonsoft.Json解析json字符串和写json字符串

    写: StringWriter sw = new StringWriter(); JsonWriter writer = new JsonWriter(sw); //如果报错则使用JsonWriter ...

  4. JSON解析工具-org.json使用教程

    转自:http://www.open-open.com/lib/view/open1381566882614.html 一.简介  org.json是Java常用的Json解析工具,主要提供JSONO ...

  5. Java:JSON解析工具-org.json

    一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网 ...

  6. JSON 解析器。JSON.stringify和JSON.parse

    以前用的是JavaScript  的eval. 现在JSON 提供了JSON.stringify和JSON.parse两个函数. JSON.parse用于从一个字符串中解析出json对象. JSON. ...

  7. json 拼二维json数组

    js声明数组 以及向数组中添加as移除json数据 JavaScript声明JSON数组的方法: //部分条件,在数据渲上数据要求是数组格式而非json数组格式,取arrayJson.dataList ...

  8. C# Newtonsoft.Json 解析多嵌套json 进行反序列化

    [ { ", "time": "2016-09-09 12:23:33", ", "freeShipping": tru ...

  9. 歌词文件解析(二):LRC格式文件的绘制

    通过对LRC文件的解析,可以轻松实现歌词可视化. 代码实现 函数名: paintLyrics(ByVal pBox As PictureBox, ByVal CurrentPosition As In ...

随机推荐

  1. base64格式文件下载方法

    下载图片时,接口返回的地址是base64格式的文件数据,因为页面需要把base64格式的数据转换为文件,再进行下载: 解决方案: 下载按钮: <el-button type="defa ...

  2. using_where, Using temporary ,using_filesort 分享

    Using filsort文档中的解释: Mysql需要额外的一次传递,以找出如何按排序顺序检索行,通过根据联接类型浏览所有行并为所有匹配where子句的行保存排序关键字和行的指针来完成排序,然后关键 ...

  3. Hdu oj 1017 A Mathematical Curiosity

    题目:pid=1017">点击打开链接 #include<stdio.h> int main() { int t; scanf("%d",&t) ...

  4. HDOJ 3339 In Action

    最短路+01背包 In Action Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  5. C++类中静态变量和静态方法的注意事项

    在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量仅仅存储一份供全部对象共用.所以在全部对象中都能够共享它.使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还能够 ...

  6. Project Euler:Problem 88 Product-sum numbers

    A natural number, N, that can be written as the sum and product of a given set of at least two natur ...

  7. Android顶部粘至视图具体解释

    不知从某某时间開始,这样的效果開始在UI设计中流行起来了.让我们先来看看效果: 大家在支付宝.美团等非常多App中都有使用.要实现这个效果,我们能够来分析下思路: 我们肯定要用2个一样的布局来显示我们 ...

  8. 0x35 高斯消元与线性空间

    颓了十天回来做题果然…… 感觉还是很有收获的,这两以前都没学过 bzoj1013: [JSOI2008]球形空间产生器sphere poj1830(upd) 之前做得很烂还被 D飞*2 了..重做一次 ...

  9. Linux就该这么学 20181008(第十三章BIND)

    参考链接https://www.linuxprobe.com Bind提供域名解析服务 DNS Domin Name Server 域名解析服务 功能模式 .正向解析,将域名解析为IP地址 .反向解析 ...

  10. Ubuntu16.04下沙盒数据导入到 Neo4j 数据库(图文详解)

    不多说,直接上干货! 参考博客 http://blog.csdn.net/u012318074/article/details/72793914   (表示感谢)  前期博客 Neo4j沙盒实验申请过 ...