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ファイルが作成できます。
コードを書く
次に使用するコードを書いていきます。
今回はテスト用にコードを書いてみました。
{
"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だけで読み取れるようにするといいかもしれません。
参考記事
この記事が気に入ったらサポートをしてみませんか?