Unity本地Json文件的创建、编辑和读取

文章目录

    • (一)建本地Json文件
    • (二)读取
    • (三)注意

(一)建本地Json文件

          Unity不能创建Json文件,导入其中的Json文件是由文本文档TXT文件改来的:
          新建TXT,并“另存为”,在“另存为”界面,修改其文件后缀名为.json、编码方式为UTF-8。
          示例:我在桌面上,新建了一个叫“SelfWriteJson”的TXT,修改前后如下
在这里插入图片描述

Unity本地Json文件的创建、编辑和读取_第1张图片
Unity本地Json文件的创建、编辑和读取_第2张图片
在这里插入图片描述
          此时可以拖入Unity了,拖入后,在其中写包含三组类变量的一个数组变量
          格式为:
{
          数组变量studentInfo:
           [
                     {
                                类变量1
                     },
                     {
                               类变量2
                     },
                     {
                               类变量3
                     },

           ]
}

{
  "studentsInfo": [
    {
      "stuNum": "01",
      "name": "zhangsan"
    },
    {
      "stuNum": "02",
      "name": "lisi"
    },
    {
      "stuNum": "03",
      "name": "wangwu"
    }
  ]
}

(二)读取

          建数组对应的类、类变量对应的类

using System;
//数组对应的类

    [Serializable]
    public class WhereArrayInIt
    {
        public Stu[] studentsInfo;
    }

using System;

//类变量对应的类
 [Serializable]
    public class Stu
    {
       public string stuNum;
       public string name;
    }

          用JsonUtility.FromJson<>()方法解析Json文件,得到数组所在类的对象,然后就可用类对象获取其数组变量,进而可以对数组中的类变量进行遍历,或取得其中的某个变量。(下方ReadLocalJson是数组所在类的类名,应该成以上第一个解析类的名字“WhereArrayInIt”)

    void Start()
    {
        TextAsset myTextAsset = Resources.Load("SelfWriteJson");
        //ReadLocalJson myJson = JsonUtility.FromJson(myTextAsset.text);
        ReadLocalJson myJson = JsonUtility.FromJson(myTextAsset.text);
        foreach(Stu stu in myJson.studentsInfo)
        {
            Debug.Log("学号"+stu.stuNum);
            Debug.Log("姓名" + stu.name);
        }
        transform.Find("StuNumTxt").GetComponent().text = myJson.studentsInfo[0].stuNum;
    }

(三)注意

          1、两个解析类并不挂到层级视图的游戏物体上,最后的读取类是在上面的。
          2、编辑Json文件时,变量名需要加引号。
          3、JsonUtility.FromJson<>()方法并不能直接读取json文件,json文件是用Resources.Load<>()载入转化为TextAsset,JsonUtility.FromJson<>()读取的是TextAsset的text属性。

你可能感兴趣的:(Unity工作笔记)