2021.7.14はじめに情熱開発部プログラマーの小川です。今回はUnityでJsonを扱える「JsonUtility」についてまとめたいと思います。JSONって?jsonとは、決められたフォーマットで書かれるテキストのことを指します。下記のようなフォーマットで書かれます。}}ところで、jsonってなんで「json」っていうんですかね。金曜日のあれですかね?初めてjsonファイルを聞いたときは物騒な名前のファイルだなと思ってました。Notation」の略で、JavaScriptのオブジェクトを作成する際の書き方を元にしたそうです。確かにJavaScriptでオブジェクトを定義するときに「{}」とか「:」を使ってますね。}</script>XMLまた、同じテキストベースのデータフォーマットとして「XML」があります。HTMLのようにタグを使い、下記のようにデータを定義しています。</param></data>jsonと見比べてみると、見づらいですね。自分だったらjsonを使います。このjsonをUnityで扱う方法をまとめていきます!JsonUtilityを触ってみたJsonUtilityのドキュメントで機能を見てみると。1.JsonUtility.FromJson()2.JsonUtility.FromJsonOverwrite()3.JsonUtility.ToJson()関数が3つしかなくて非常に機能がシンプルですね。Objectって感じです。ひとつづつ説明していきます。JsonUtility.FromJson(string)jsonからUnityオブジェクトへ変換する関数です。引き数はstring型のjsonフォーマットのテキストになります。Unity側で受け皿を用意します。jsonの構造を元にとってくるので変数名はjsonのkeyと同じにしなければいけません。するので必ず[System.Serializable]が必要になります。詳しくはUnityドキュメントをご参照ください。def;}Unity側でのオブジェクトが出来たら、読み込みます。JsonUtility.FromJson<PlayerClass>(json);今回はResourcesで読み込みました。Assets/Resources以下からのパスです。ログ出力をしてみるとできてますね。このようにjsonをFromJsonで先ほど用意したオブジェクトPlayerClassに変換します。)FromJsonOverwriteはFromJsonと少し似ています。jsonから既存のUnityオブジェクトに上書きする関数です。FromJsonで一度クラスに値を入れてから上書きしてみましょう。player);FromJsonとFromJsonOverwrite関数の下にログ出力を入れてみました。ちなみに上書きするオブジェクトの変数すべてに値が無いとエラーになるので注意です。JsonUtility.ToJson(object)Unityクラスからjsonを生成する関数です。FromJsonの逆ですね。値を入れてからjsonに変更してみます。JsonUtility.ToJson(player);ログ出力で確認してみます。引き数はjsonに変換したいインスタンスですが、第二引き数もありbool値で綺麗に整形するかどうか指定できるそうです。JsonUtility.ToJson(player,true);なるほど、改行等が入って見やすくなりました。このような感じでUnityでjsonを扱うことが出来るみたいです。EditorJsonUtilityという派生型があります。著しく早いことが、ベンチマークテストで示されています。GCメモリの使用が、以下のように最小に抑えられています。形式にシリアライズ以上です。株式会社ロジカルビートは一切の責任を負いません。understrap.com。