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

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

科普时间

转至https://www.cnblogs.com/XTStarry/p/10122933.html

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;
    }
}

Alt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值