UnityでJSONを扱う方法として、SimpleJSONを使用してJSONをパースします。今回はWeb上からJSONファイルを取得する方法ではなく、プロジェクトのAssetフォルダにJSONファイルがあることとします。
JSONパーサーをダウンロードする
JSONを読み込むためのパーサーを組み込みます。使用するのはSimpleJSONです。
SimpleJSON - Unify Community Wiki
リンク先からSimpleJSON.zipをダウンロードします。
SimpleJSONをプロジェクトにインポートする
SimpleJSON.zipを解凍すると、中にSimpleJSON.unitypackageというUnity Packageが入っています。
メニュー > Asset > Import Package > Custom Package を選択(もしくは、Projectビューで右クリック > Import Package > Custom Packageを選択)してください。
SimpleJSON.unitypackageを選択してプロジェクトにSimpleJSON.unitypackageを取り込んでください。
ソースコードを記述する
SimpleJSONを使ってJSONファイルを読み込むスプリクトを記述します。
Scene上のゲームオブジェクトにAdd Componentでスクリプトを追加します。
(今回は空のゲームオブジェクトを作成し、スクリプトを追加しました。)
ProjectビューからCreate > C# Script でスプリクトを作成します。
ファイル名は「JSONSample.cs」としました。
JSONSample.cs
using UnityEngine;
using System.Collections;
using System.IO; //System.IO.FileInfo, System.IO.StreamReader, System.IO.StreamWriter
using System; //Exception
using System.Text; //Encoding
using SimpleJSON;
public class JSONSample : MonoBehaviour {
public string jsonFileName;
private JSONNode json;
// Update is called once per frame
void Update () {
// スペースキーを押したらファイル読み込みをする
if (Input.GetKeyDown (KeyCode.Space)) {
ReadFile ();
}
}
// 読み込んだ情報をGUIとして表示
void OnGUI()
{
if (json != null) {
// キーワードがnameの値を取り出す
GUI.TextArea (new Rect (0, 0, Screen.width, Screen.height), "name:" + json["name"]);
}
}
// 読み込み関数
void ReadFile(){
string fileText = "";
// FileReadTest.txtファイルを読み込む
FileInfo fi = new FileInfo(Application.dataPath + "/" + jsonFileName);
try {
// 一行毎読み込み
using (StreamReader sr = new StreamReader(fi.OpenRead(), Encoding.UTF8)){
fileText = sr.ReadToEnd();
// JSONをパースして値を取り出す
json = JSONNode.Parse(fileText);
}
} catch (Exception e){
// 改行コード
fileText += "\n";
}
}
}
JSONファイルを指定する
スクリプトをInspector上で表示すると、JSONファイル名を指定できるようになっているはずです。JSONファイルをプロジェクトに取り込み、ファイル名を指定してください。
サンプルで使用するJSONファイルは以下です。
sample.json
{"ID":null,"name":"Doe","first-name":"John","age":25,"hobbies":["reading","cinema",{"sports":["volley-ball","snowboard"]}],"address":{}}
実行結果
Playボタンを押して実行し、Spaceキーを押したら、以下の画面が表示されJSONファイルから指定したデータが読み込まれたことが確認できたら成功です。
参考サイト
Unityで外部データ読み込み - Qiita
SimpleJSON - Unify Community Wiki
ソースコード
ソースコードは下記のリンクよりダウンロードできます。