見出し画像

JSONファイルを作成してUnityで読み込む

概要

UnityでJsonファイルの読み込む機会があったため備忘録もかねて書き残しておきます。この記事ではJsonの作成からUnity内でJsonファイルの情報を使用するまでを解説します。

JSONファイルについて

JSONファイルは、 JavaScript Object Notation の略でJavaScriptで使用することを想定して開発されましたデータフォーマット(データの記述形式)のことです。JSONファイルは読み書きがしやすいので様々な言語で使用されています。

JSONファイルはテキストエディタを使用して作成します。

JSON作成ツール

Visual Studio Code(VSCode)

Visual Studio CodeはMicrosoftが開発しているWindows、Linux、macOS、Web用のソースコードエディタです。JSONのほかにもJavaScript , C++やPythonなどさまざまな言語に対応しています。

Notepad++

Microsoft Windowsで動作するフリーのテキストエディタです。
80種類ほどのプログラム言語に対応します。




JSONファイルを作成する

今回はVisual Studio Codeを使用してJSONファイルを作成したいと思います。

Visual Studio Codeをインストール

まず初めにVisual Studio Codeをインストールします。
この記事を参考にインストールと言語設定を行ってみてください。

JSONファイルを作成

まず初めに左上のファイルから新しいファイルを作成します。
その後ファイル名を入力する際に 
○○○○.jsonと入力して作成してください。
これだけでJSONファイルが作成できます。

新しいファイルから作成
.jsonをつける

コードを書く

次に使用するコードを書いていきます。
今回はテスト用にコードを書いてみました。

{
    "characterNum" : 1,
    "character" : {"type" : "Player", "name" : "Hero","hp" : 100}
}

JSONについてはこちらの記事の参考にしてみてください

Unityで読み込む

Unityで読み込む手段

JsonUtility
UnityにはJsonUtilityという機能がありこの機能を使用するだけで簡単に使うことができます。
※このJsonUtilityという機能についてはUnityバージョンが5.3以降である必要があります。

ただし、多次元配列、配列内配列(ジャグ配列)、配列のコレクションなどは、使えません。

LitJSON
LitJSON
を使用すればJsonUtilityで使えないものも使えるようになります
今回は使用しないので参考になる記事を載せておきます

https://github.com/findix/litjson-unity

サンプルコード

・JSONを入れる変数を作成

 [SerializeField]
 public TextAsset jsonTextAsset;

・格納用のクラスと変数を作成
まずは読み込んだ情報を格納するクラスと変数を用意します。
注意することは[Serializable]をつけることと変数名をJSONの変数名と同じにすること
参考記事
https://memonoana.hatenablog.com/entry/2019/05/22/005823

 // シリアライズ可能なクラス
    // JSONの情報
    [Serializable]
    public class JsonData
    {
        public int characterNum;
        public Character character;
    }
    // Characterの情報
    [Serializable]
    public class Character
    {
        public string type;
        public string name;
        public int hp;
    }

・JsonUtilityを使用して格納用に作成したクラスに格納する
JSONを文字列にしてJsonUtility.fromJsonメソッドを使用して
格納用に作成したクラスに格納する。

 void Start()
    {
        // 文字列に変換
        string inputString = jsonTextAsset.text;
        // JsonUtility.FromJsonを使用して読み込み
        // JsonUtility.FromJson<格納するクラス>(JSONの文字列)
        JsonData json = JsonUtility.FromJson<JsonData>(inputString);

        // 読み込んだ情報をDebug.Logで確認
        Debug.Log("キャラクターの数 : " + json.characterNum);
        Debug.Log("タイプ : " + json.character.type);
        Debug.Log("名前 : " + json.character.name);
        Debug.Log("HP : " + json.character.hp);
    }

・Jsonを入れる

・結果
読み込んだ情報が正しく出ました



さいごに

今回はJSONの作成からUnityでそのJSONの情報を使用するまでを記事にしてみました。JsonUtilityは処理速度がとてもは速いですが、JSONのコードによっては使えないものも多くあります。一方、LitJSONはJSONのコードに対応しやすいですがダウンロードする必要があったり、処理がJsonUtilityと比べてどうしても遅くなったりしてしまいます。JSONのコードも工夫してJsonUtilityだけで読み取れるようにするといいかもしれません。



参考記事


この記事が気に入ったらサポートをしてみませんか?