欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

unity读取Json文件

程序员文章站 2024-01-20 11:29:52
...

unity读取Json文件

最近做项目的时候,因为物品太多,而且每个物品的信息都类似,所以我们没有选择一个一个赋予信息 ,而是选择使用加载Json数据表的方法进行获取信息。在这里,我们通过做一个查询系统来进行演示读取Json数据表。
1.首先,先创建一个项目,新建四个UI组件,输入框,按钮和文字,背景,同时导入Json的引用文件:LitJson
unity读取Json文件
2.新建一个StreamingAssets文件夹
unity读取Json文件
3.新建一个文本文档,开始写数据表,如下格式
unity读取Json文件
4.然后另存为Json文件,设置如下:
unity读取Json文件
5.把新建好的json数据文件拖入刚才的StreamingAssets文件夹里面,为了保证json文件的正确性,打开网页,把里面的数据复制,找一个检测json数据的网站,进行数据检测:
unity读取Json文件
unity读取Json文件
同时,我们为了方便,可以生成C#实体类,待会用得上
unity读取Json文件
6.新建一个脚本,随便挂在一个物体上,这里我挂在摄像机上。脚本代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using LitJson;
using System.IO;

public class TestDataItem
{
    /// <summary>
    /// 
    /// </summary>
    public string ID { get; set; }
    /// <summary>
    /// 雕塑
    /// </summary>
    public string Type { get; set; }
    /// <summary>
    /// 滕王阁
    /// </summary>
    public string Name { get; set; }
}

public class Root
{
    /// <summary>
    /// 
    /// </summary>
    public List<TestDataItem> TestData { get; set; }
}
public class JsonText : MonoBehaviour {

    public InputField inputField;//输入框
    public Text contentText;//文本框

    public void GetJsonInfo()//这个方法给按钮注册
    {
        if (inputField.text == "")//输入框为空
        {
            contentText.text = "输入为空";
        }
        else

        {
            StreamReader streamreader = new StreamReader(Application.dataPath + "/StreamingAssets/Test.json");//读取数据,转换成数据流
            JsonReader js = new JsonReader(streamreader);//再转换成json数据
            Root r = JsonMapper.ToObject<Root>(js);//读取
            for (int i = 0; i < r.TestData.Count; i++)//遍历获取数据
            {
                if (inputField.text == r.TestData[i].ID)
                {
                    contentText.text = "ID号码:" + r.TestData[i].ID + "  类型:" + r.TestData[i].Type + "  名字:" + r.TestData[i].Name;
                    break;
                }
            }
        }
    }
}

7.这样,把上面那个方法给按钮注册,当我们输入正确的id,就可以进行简单的数据读取了,将复制的实体类也粘贴到自己的脚本里,当然这里你也可以自己写json实体类,也就是两个东西,一个类是具体的单个数组里面的元素,一个是定义一个整体的链表,从我们写的json数据表就可以看出怎么写,格式很重要,错了一个就读取不到,所以一定要注意哟。
unity读取Json文件