两种方式读取Json文件 数据

首先下载LitJson.dll 文件,并将其拖入 Unity项目中的 的 Assets/Plugins目录中

其次在你的Unity项目中创建好Assets/StreamingAssets文件夹,用于存放文件

功能:将数据写入到文件中(可自由扩充),在程序运行时获取指定对象(这里 根据指定id 获取其对象数据)。

json文件中的数据参数 要与Skill中公开的字段 名称完全一致。

(注意Json 文件之准许有一个 顶级项【即一个数组 或一个对象】)

json技能信息.text

[
  {
    "id": 1,
    "name": "D",
    "damage": 20
  },
  {
    "id": 2,
    "name": "T",
    "damage": 200
  },
  {
    "id": 3,
    "name": "C",
    "damage": 2000
  }
]

对应的 Skill类数据

public class Skill 
{
    public int id;
    public string name;
    public int damage;

}

代码块:

private void OnGUI()
    {
        if (GUILayout.Button("读取方式一"))
        {
            string file = File.ReadAllText(Application.streamingAssetsPath +"/json技能信息.txt");
            //jsonData 代表一个数组或者一个对象【JsonData 就是json数据 根据json文件不同 其代表不用 ,可能为数组可能为对象】
            JsonData jsonData = JsonMapper.ToObject(file);
            Skill skill = new Skill();
            //使用 foreach 遍历 该数据
            foreach (JsonData temp in jsonData)//这里temp 代表一个对象
            {
                JsonData idValue = temp["id"];//通过字符串索引器 可以获得json文件中 键值对的值
                skill.id = int.Parse(idValue.ToString());

                skill.name = temp["name"].ToString();
                skill.damage = int.Parse(temp["damage"].ToString());
                //【将读取的数据对象】添加到字典集合中
                if (!skillDic.ContainsKey(skill.id))
                    skillDic.Add(skill.id, skill);
            }
            Debug.Log($"{skillDic[2].name},{skillDic[2].id},{skillDic[2].damage}");//C,3,2000
        }


        if (GUILayout.Button("读取方式二"))
        {
            string file = File.ReadAllText(Application.streamingAssetsPath + "/json技能信息.txt");
            //因为 json文件中 数据顶级项是数组 所以直接转换为 对象数组
            Skill[] skills = JsonMapper.ToObject<Skill[]>(file);
            
            //使用 foreach 遍历 该数据
            foreach (Skill temp in skills)//这里temp 代表一个对象
            {
                if (!skillDic.ContainsKey(temp.id))
                    skillDic.Add(temp.id, temp);//将数据添加到集合中
            }
            Debug.Log($"{skillDic[1].name},{skillDic[1].id},{skillDic[1].damage}");//D,1,20
        }

    }

猜你喜欢

转载自blog.csdn.net/weixin_44906202/article/details/128840303