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

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

程序员文章站 2022-03-16 13:01:57
文章目录(一)建本地Json文件(二)读取(三)注意(一)建本地Json文件Unity不能创建Json文件,导入其中的Json文件是由文本文档TXT文件改来的:新建TXT,并“另存为”,在“另存为”界面,修改其文件后缀名为.json、编码方式为UTF-8。&nbs...

(一)建本地Json文件

          Unity不能创建Json文件,导入其中的Json文件是由文本文档TXT文件改来的:
          新建TXT,并“另存为”,在“另存为”界面,修改其文件后缀名为.json、编码方式为UTF-8。
          示例:我在桌面上,新建了一个叫“SelfWriteJson”的TXT,修改前后如下
Unity本地Json文件的创建、编辑和读取
Unity本地Json文件的创建、编辑和读取
Unity本地Json文件的创建、编辑和读取
          此时可以拖入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<TextAsset>("SelfWriteJson");
        ReadLocalJson myJson = JsonUtility.FromJson<ReadLocalJson>(myTextAsset.text);
        foreach(Stu stu in myJson.studentsInfo)
        {
            Debug.Log("学号"+stu.stuNum);
            Debug.Log("姓名" + stu.name);
        }
        transform.Find("StuNumTxt").GetComponent<Text>().text = myJson.studentsInfo[0].stuNum;
    }

(三)注意

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

本文地址:https://blog.csdn.net/weixin_42935398/article/details/107606560