zoukankan      html  css  js  c++  java
  • 快速上手Unity原生Json库

    现在新版的Unity(印象中是从5.3开始)已经提供了原生的Json库,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具类的使用,发现使用还挺方便的,所以打算把项目中的Json库换成Unity原生的。在Unity3D开发中Json有什么用呢?下面就来说说Json在Unity中的使用。

    一、Json有什么用?


    Json在Unity中还是挺常用的一种数据格式的。那么,在Unity开发中哪些地方会用到Json呢?我相信没有太多编程经验的人肯定对这个问题比较感兴趣。在Unity中,有三种情况下会用到Json:

    1. 跟服务器进行数据交互
    2. 配置文件
    3. 跟Android/iOS数据交互
      目前这三种情况在我们项目中都用到了,搞明白了Json怎么用,这些都很简单,在这里就不赘述了,直接进入正题。

    二、Json怎么用?


    using UnityEngine;
    using System;
    
    public class JsonExample : MonoBehaviour
    {
        void Start()
        {
            #region 序列化
            MyZone myZone = new MyZone();
            myZone.blogUrl = "http://www.jianshu.com/users/fd3eec0ab0f2/latest_articles";
            myZone.blogName = "Sheh伟伟的博客";
    
            Blog blog = new Blog();
            blog.url = "http://www.jianshu.com/p/4243b99a5b84";
            blog.name = "快速上手Unity原生Json库";
            blog.time = DateTime.Now.ToString("yyyy-MM-dd");
            myZone.blog = blog;
    
            string json = JsonUtility.ToJson(myZone);
            Debug.Log(json);
            #endregion
    
            #region 反序列化
            string blogStr = Resources.Load<TextAsset>("MyZone").text;
            myZone = JsonUtility.FromJson<MyZone>(blogStr);
            Debug.Log(myZone.ToString());
            #endregion
        }
    }
    
    [Serializable]
    public class MyZone
    {
        /// <summary>
        /// 博客主页地址
        /// </summary>
        public string blogUrl;
        /// <summary>
        /// 博客名
        /// </summary>
        public string blogName;
        /// <summary>
        /// 本篇博客
        /// </summary>
        public Blog blog;
    
        public override string ToString()
        {
            return string.Format("blogUrl:{0}, blogName:{1}, blog:{2}", blogUrl, blogName, blog.ToString());
        }
    }
    
    [Serializable]
    public class Blog
    {
        /// <summary>
        /// 文章名称
        /// </summary>
        public string name;
        /// <summary>
        /// 本篇博客链接
        /// </summary>
        public string url;
        /// <summary>
        /// 博客发表时间
        /// </summary>
        public string time;
    
        public override string ToString()
        {
            return string.Format("<name:{0}, url:{1}, time:{2}>", name, url, time);
        }
    }
    
    

    Json文件

    {
      "blogUrl": "http://www.jianshu.com/users/fd3eec0ab0f2/latest_articles",
      "blogName": "Sheh伟伟的博客",
      "blog": 
      {
        "name": "快速上手Unity原生Json库",
        "url": "http://www.jianshu.com/p/4243b99a5b84",
        "time": "2016-09-27"
      }
    }
    

    三、注意事项


    经过测试发现JsonUtility不支持序列化DateTime、Dictionary和Hashtable,其他类型暂时还没有测试,有兴趣的可以自行测试。

    四、参考资料


    Unity API
    介绍 JSON

    如果本文有错误之处还请帮忙指出。本文欢迎转载,但转载请注明出处:http://www.jianshu.com/users/fd3eec0ab0f2/latest_articles

  • 相关阅读:
    POJ 1426 Find The Multiple(数论——中国同余定理)
    POJ 2253 Frogger(Dijkstra变形——最短路径最大权值)
    POJ 3790 最短路径问题(Dijkstra变形——最短路径双重最小权值)
    POJ 3278 Catch That Cow(模板——BFS)
    HDU 1071 The area
    HDU 1213 How Many Tables(模板——并查集)
    POJ 1611 The Suspects
    light oj 1214 Large Division
    POJ 1258 Agri-Net(Prim算法求解MST)
    POJ 2387 Til the Cows Come Home(模板——Dijkstra算法)
  • 原文地址:https://www.cnblogs.com/davidsheh/p/6056537.html
Copyright © 2011-2022 走看看