Unity:通过LitJson对JSON数据创建与使用

本文章首发于Unity:通过litjson对json数据创建与使用


科普时间:

LitJSON是一个使用C#编写的.NET库,我们可以通过它来处理JSON数据。

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

为什么要使用JSON?

如果使用C#脚本的方式存储游戏内的对象数据(比如人物的基础血量、装备的名称/属性/说明、任务信息),不但不方便统管理,还不适合非技术人员(策划、美术等)进行添加、修改。

而使用JSON则可以避免这些问题。

如何操作:

首先,下载LitJson.dll文件,导入Unity工程中,我们就能像使用其他包一样使用LitJson了:

using LitJson;

我们接着在工程中创建一个JSON文件(Unity本身不支持直接创建,我们可以打开资源管理器创建)。

这里我创建的文件为:

items.json

我们打开刚刚创建的JSON文件,向里面添加信息:

[
  {
    "id": 0,
    "title": "手枪",
    "value": 1,
    "description": "一把简易的手枪。"
  },
  {
    "id": 1,
    "title": "冲锋枪",
    "value": 2,
    "description": "一把简易的冲锋枪。"
  }
]
 

JSON的语法非常简单。上面的代码创建了一个拥有两个条目的数组,每个条目包含id、title、value、description四个内容。详细的语法大家可以百度了解。

接着我们通过C#脚本来将JSON读取并保存到对象中:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System.IO;
public class ItemDatabase : MonoBehaviour {
?
    // 用于存储读取的JSON数据
    private JsonData itemData;
?
    // 用于分开保存刚刚读取的数据
    private List<Item> database = new List<Item>();
?
    void Start () {
        // 读取数据,存入itemData,注意我将items.json放在根目录,放在其他地方的话记得改参数
        itemData = JsonMapper.ToObject(File.ReadAllText(Application.dataPath + "/items.json"));
?
        // 构建数据库
        ConsructItemDatabase();
?
        // 这两条Debug信息用来检测我们的工作成果
        Debug.Log(database[0].Description);
        Debug.Log(FetchItemByID(0).Title);
    }

    // 数据库构建函数
    void ConsructItemDatabase()
    {
        // 遍历itemData
        for(int i = 0;i<itemData.Count;i++)
        {
            // 一个个将itemData的数据存入database
            database.Add(new Item(
                (int)itemData[i]["id"],
                itemData[i]["title"].ToString(),
                (int)itemData[i]["value"],
                itemData[i]["description"].ToString()));
        }
    }
?
    // 通过ID读取数据
    public Item FetchItemByID(int _id)
    {
        // 遍历database
        for(int i=0;i<database.Count;i++)
        {
            // 查找ID
            if(_id == database[i].ID)
            {
                return database[i];
            }
        }
        // 找不到返回null
        return null;
    }
}
?
// 用于存储对象信息,每一个值都和JSON中的内容对应
public class Item
{
    public int ID { get; set; }
    public string Title { get; set; }
    public int Value { get; set; }
    public string Description { get; set; }
?
    // 构造函数
    public Item(int _id,string _title,int _value,string _description)
    {
        ID = _id;
        Title = _title;
        Value = _value;
        Description = _description;
    }
}
 

原文地址:https://www.cnblogs.com/XTStarry/p/10122933.html

时间: 2024-08-27 10:54:14

Unity:通过LitJson对JSON数据创建与使用的相关文章

Java JSON数据创建和读取

Java  json数据创建 package com.JavaTest; import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class CreatJson { public static void main(String[] args) { JsonObject object = new JsonObject(); object.addProperty("cat", "it&

C#使用LitJson对Json数据解析

官网:(json.org/json-zh.html   <可选中文>) JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Jav

利用请求的JSON数据创建图形图层

先看效果图: 包含三个部分:信息窗口(标题是要素的某个属性信息,其余是感兴趣的属性信息).图上图形按照某一属性大小不一显示,图例 1.创建底图用于存放以上三部分: "esri/Map","esri/views/MapView" var map = new Map({ basemap:"dark-gray"}); var view = new MapView({ map:map, container:"viewDiv", cen

jQuery获取json数据实现代码

jQuery获取json数据实现代码:使用jQuery操作json数据是非常的频繁的,下面提供两端代码供大家参考之用,大家可以自行分析,以便灵活应用. /栏目 //发送ajax请求 $.getJSON( "../../../Templet/GetInfoHandler.ashx", //产生JSON数据的服务端页面 {id: "0", sid: "1;2;3", rid: Math.round(Math.random() * 10) }, //向

android-async-http开源项目对服务器端返回JSON数据的处理

一.在JavaEE项目中搭建环境 1. 导入相关jar包 2. 搭建相关的包和类 3.类中的方法简单实现 User: 声明以下属性,并实现无参构造器和有参构造器,以及各自的get和set方法 UserDao: UserDaoImpl: JsonServlet: <span style="white-space:pre"> </span>protected void doGet(HttpServletRequest request, HttpServletResp

SQL Server 中的 JSON 数据

下面是 JSON 文本的示例 [{ "name": "John", "skills": ["SQL", "C#", "Azure"]}, { "name": "Jane", "surname": "Doe"}] 通过使用 SQL Server 内置函数和运算符,你可以对 JSON 文本执行以下操作: 分析 J

Android中Json数据读取与创建

一:  Json的特性和在数据交互中的地位就不用说了,直接看案例. 首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项目文件目录下是没有assets文件夹的, 所以需要我们进行创建,创建方法如下: 创建好assets文件目录以后,在其目录下创建一个Text.json文件. 二:如何获得assets文件目录下的Json数据: 在eclipse下是:InputStreamReader(getAssets().open(

Unity3d数据存储 PlayerPrefs,XML,Json数据的存储与解析

今天来复习一下数据存储方面的基础知识,Unity3d中常用的数据存储方式有Unity自带的PlayerPrefs, XML文档, Json文档,还有常用的轻量级数据库SQL, 涉及的琐碎知识非常多,在这里自己归纳总结一下,方便日后温故而知新. PlayerPrefs存储数据 PlayerPrefs的存储方式非常简单,但可用性不强,一般只用于调试过程存储少量数据,很少大范围使用 适用设备:Mac OSX, Linux, Windows,Web Players 存储机制:Key-Value (类似于

unity 5.3 的 JSON Serialization

孙广东  2015.12.23 JSON 序列化功能和从 JSON 格式 转换到 对象.与 web 服务交互,或只是为了打包和拆包数据 到一个基于文本的格式很容易,这可以非常有用. 使用简单      JSON 序列化功能是围绕一个'structured'的 JSON,意味着你描述变量将要存储在您的 JSON 数据中通过创建一个类或结构的概念.例如: [Serializable] public class MyClass { public int level; public float time