最近 Unity 内で JSON 形式のデータファイルを取り込む方式を使ったので、備忘も兼ねて簡単に使用法を解説します。
具体的には Unityエディタ内に用意した Resourceフォルダから JSON形式ファイルを読み取る方法です。
今回は JSONとは? と言うかなり基本的な部分からの説明となります。
【JSONとは】
まず JSONとは、データをやり取りする際のデータフォーマットの1つです。
JSONの基本的な記述法は以下の様になります。
{“名前1”: ”値1”,”名前2”: ”値2”,”名前3”:”値3”}
また JSONは階層構造も表現できます。
{“階層名1”:
{“名前1”: ”値1”,”名前2”: ”値2”,”名前3”:”値3”}
}
そして、配列も以下の様にして表現できます。
{“配列1”: [{“名前1”: ”値1”,”名前2”: ”値2”,”名前3”:”値3”},
{“名前1”: ”値1”,”名前2”: ”値2”,”名前3”:”値3”}]}
{“名前1”: ”値1”,”名前2”: ”値2”,”名前3”:”値3”}]}
応用としてこんなこともできますよね。
{
“配列1”: [{“名前1”: ”値1”,”名前2”: ”値2”,”名前3”:”値3”},
{“名前1”: ”値1”,”名前2”: ”値2”,”名前3”:”値3”}],
{“名前1”: ”値1”,”名前2”: ”値2”,”名前3”:”値3”}],
“配列2”: [{“名前1”: ”値1”,”名前2”: ”値2”,”名前3”:”値3”},
{“名前1”: ”値1”,”名前2”: ”値2”,”名前3”:”値3”}],
{“名前1”: ”値1”,”名前2”: ”値2”,”名前3”:”値3”}],
“階層名1”:
{“名前1”: ”値1”,”名前2”: ”値2”,”名前3”:”値3”}
}
【他フォーマットの比較】
JSON以外によく聞くデータフォーマットに CSVや XMLがあります。それらと順番に比較しながら解説してみましょう。
CSVとの比較:
データフォーマットで1番良く使われているのは CSV形式かと思います。手作業でのデータ交換やシステム間のデータ連携でもよく使われます。とても手軽に使えるのが売りですね。
その CSVに比べると JSONは人が直接読みやすいです。構造的に自由な表現ができるので、情報の本質にあった構造を持たせられます。そして、名前:値と言う形になっているので視認性も高いです。
XMLとの比較:
XMLは HTMLの記述方法と同じようなタグ形式の記述となっています。システム間のデータ連携でよく使われています。
XMLのタグは自分で定義できますので、人が理解しやすいように情報にあった構造をもたせることができます。しかし、タグ付き言語は HTMLのようにタグで囲む必要があるので人が直接読むのには JSONの方が読みやすく感じると思います。
【UnityでのJSON使用】
Unityで JSON形式のデータを使う場合、例えばキャラクターのパラメータやアイテム等をデータファイルとして作成して管理するとか考えられるでしょう。
実際に Unityで JSON形式のデータを読み込む際に Unityに標準で備わっている JsonUtility が使えます。これを用いて String型で読み取った JSON形式のテキストファイルを、JSONデータとしてデータを分解して読み取ることが可能です。
その JSONの読み取り部分の書き方は以下の様になります。
まず、JSON形式のテキストファイルをまとめて String型の1つの文字列として読み込みます。ここでは Unityの Resourcesフォルダから読み込む方式を示してますが、他の読込法でも構いません。
string str_File = Resources.Load<TextAsset>("MonsterInfo").ToString();
そして、1つの文字列として読み込んだデータをJSON形式にデータ分割するために JsonUtilityクラスを使い以下にように記述します。
Json_File json_File = JsonUtility.FromJson<Json_File>(str_File);
これで、JSON形式のデータとして個別のデータを取得することができます。
では次は具体的に Unity上で実行してみますが、そこは次回にシンプルな JSON形式の読み込みと、配列を使った JSON形式の読み込みの事例を取り上げ説明いたします。
Sponsored Link