Dos formas de leer datos de archivos Json

Primero descargue el archivo LitJson.dll y arrástrelo al directorio Activos/Complementos en el proyecto de Unity

En segundo lugar, cree la carpeta Assets/StreamingAssets en su proyecto de Unity para almacenar archivos

Función: escribir datos en el archivo (ampliable libremente) y obtener el objeto especificado cuando el programa se está ejecutando (aquí, obtener los datos del objeto de acuerdo con la identificación especificada).

Los parámetros de datos en el archivo json deben ser exactamente los mismos que los nombres de los campos revelados en la Habilidad.

(Tenga en cuenta que el permiso del archivo Json tiene un elemento de nivel superior [es decir, una matriz o un objeto])

json skill information.text

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

Datos de clase de habilidad correspondientes

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

}

bloque de código:

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
        }

    }

Supongo que te gusta

Origin blog.csdn.net/weixin_44906202/article/details/128840303
Recomendado
Clasificación