当前位置: 移动技术网 > IT编程>开发语言>JavaScript > Unity本地Json文件的创建、编辑和读取

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

2020年07月28日  | 移动技术网IT编程  | 我要评论

(一)建本地Json文件

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网