まず、LitJson.dll ファイルをダウンロードし、Unityプロジェクトの Assets/Plugins ディレクトリにドラッグします。
次に、Unity プロジェクトにファイルを保存するための Assets/StreamingAssets フォルダーを作成します。
機能: ファイルにデータを書き込み (自由に拡張可能)、プログラムの実行時に指定されたオブジェクトを取得します (ここでは、指定された ID に従ってオブジェクト データを取得します)。
json ファイル内のデータ パラメーターは、スキルで開示されているフィールド名とまったく同じである必要があります。
(Json ファイルのパーミッションには最上位の項目 [配列またはオブジェクト] があることに注意してください)
jsonスキル情報.テキスト
[
{
"id": 1,
"name": "D",
"damage": 20
},
{
"id": 2,
"name": "T",
"damage": 200
},
{
"id": 3,
"name": "C",
"damage": 2000
}
]
対応スキルクラスデータ
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
}
}