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

  • 相关阅读:
    golang之panic,recover,defer
    Golang之函数练习
    Golang之strings包
    Golang之字符串操作(反转中英文字符串)
    keil中使用——变参数宏__VA_ARGS__
    到底该不该用RTOS——rtos的优点
    c语言联合union的使用用途
    c语言的#和##的用法
    c语言位域的使用注意事项——数据溢出
    基于 Keil MDK 移植 RT-Thread Nano
  • 原文地址:https://www.cnblogs.com/davidsheh/p/6056537.html
Copyright © 2011-2022 走看看