UnityでJSONファイルを読み込む(SimpleJSON編)

  • 15
    いいね
  • 2
    コメント
この記事は最終更新日から1年以上が経過しています。

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を取り込んでください。

unity2015-03-14 22.16.59.png

ソースコードを記述する

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ファイルをプロジェクトに取り込み、ファイル名を指定してください。

unity2015-03-14 22.55.54.png

サンプルで使用するJSONファイルは以下です。

sample.json

{"ID":null,"name":"Doe","first-name":"John","age":25,"hobbies":["reading","cinema",{"sports":["volley-ball","snowboard"]}],"address":{}}

実行結果

Playボタンを押して実行し、Spaceキーを押したら、以下の画面が表示されJSONファイルから指定したデータが読み込まれたことが確認できたら成功です。

unity2015-03-14 23.02.46.png

参考サイト

Unityで外部データ読み込み - Qiita
SimpleJSON - Unify Community Wiki

ソースコード

ソースコードは下記のリンクよりダウンロードできます。

UnityExample/JSONSample - GitHub