Unity3D开发小贴士(十四)JsonUtility
来源:互联网 发布:mac电脑翻墙教程 编辑:程序博客网 时间:2024/05/17 23:59
Json是现在非常常用的数据格式,因为.Net的版本问题,所有没有很方便的方法可以直接在Unity里面使用C#官方的Json库,于是Unity3D自己提供了自己的一套Json工具——JsonUtility。
参考下面的示例:
using UnityEngine;using System.Collections;public class TestSer{public int i;public string str;}public class TestDeser{public string str;public float i;}public class TestDeser2{public string st;public float f;}public class NewBehaviourScript : MonoBehaviour {// Use this for initializationvoid Start () {TestSer ts = new TestSer();ts.i = 10;ts.str = "aaaa";string json = JsonUtility.ToJson (ts);Debug.Log (json); TestDeser td = JsonUtility.FromJson<TestDeser> (json);Debug.Log (td.str);Debug.Log (td.i);TestDeser2 td2 = JsonUtility.FromJson<TestDeser2> (json);Debug.Log (td2.st);Debug.Log (td2.f);}}
可以看出,JsonUtility使用起来很方便,而且没什么节操约束。
JsonUtility支持数组,并且支持可序列化的自定义类型,也就是需要添加System.Serializable特性(关于特性,参考C#语法小知识(七)特性)。
例如:
[System.Serializable]public struct TestObj{public string ttt;}public class TestSer2{public int i;public string str;public TestObj obj;public int[] arr;public GameObject go;}
序列化:
TestSer2 ts2 = new TestSer2();ts2.i = 10;ts2.str = "aaaa";ts2.obj = new TestObj ();ts2.obj.ttt = "tttt";ts2.arr = new int[3];ts2.arr [0] = 1;ts2.arr [1] = 1;ts2.arr [2] = 1;ts2.go = new GameObject ("go");string json = JsonUtility.ToJson (ts2);
打印出来的结果:
{"i":10,"str":"aaaa","obj":{"ttt":"tttt"},"arr":[1,1,1],"go":{"instanceID":-12766}}
毫无疑问,JsonUtility使用了C#反射(参考C#语法小知识(十)反射),所以效率上会差一点。效率方面,肯定还是微软自家的Binary和XML库会稍微好一点。(详情参考C#语法小知识(十六)序列化与反序列化(XML)和C#语法小知识(十七)序列化与反序列化(Binary))
0 0
- Unity3D开发小贴士(十四)JsonUtility
- Unity3d开发(十四) AssetBundle中的资源提取
- unity3D游戏开发十四之NGUI一
- unity3D游戏开发十四之NGUI一
- unity3D游戏开发十四之NGUI一
- Orientation Auto Rotation旋转屏幕crash问题(Unity3D开发之十四)
- UnityEditor下文件操作方法汇总(Unity3D开发之二十四)
- Unity3D学习笔记(十四)GUI
- 【Unity3D游戏开发】之常用网站、插件、技术记录 (十四)
- Unity3D 2D游戏开发 官方教程。(十四)
- android studio开发<十四> Unity3d调用安卓功能
- Unity3D开发小贴士(八)tolua库
- Unity3D开发小贴士(十)雾效
- Unity3D开发小贴士(十五)状态机组件
- Unity3D开发小贴士(十六)SVN插件
- Unity3D开发(九):Unity3d流光效果
- Unity3D开发小贴士(三)愉快的使用Lua开发
- 实习总结(十四)---S2SH整合开发
- 一分耕耘,一分收获——自考总结
- 平台demo
- MySQL 常用语句
- 浅谈前端与SEO
- [综合] 一个简单图形界面框架XYGui的设计与实现 (二)
- Unity3D开发小贴士(十四)JsonUtility
- 在普通用户下无法创建目录
- Android: 显示系统模块加载以及调用流程 HWComposer::loadFbHalModule() -> framebuffer_open()
- Linux命令之patch操作命令 与diff命令结合
- 野指针与避免
- JSP基本概念及运行原理
- 暗域八翼邪龙
- English——love deeply
- 查找整数