Git を使い始めたので、テストも兼ねて unity のデータセーブ・ロード関連を記事にしていこうと思っています。よろしくお願いします。
さて、今回はとてもシンプル。クラスの中身をまるっと JSON 形式にしてセーブ・ロードします。
ダウンロード(リポジトリ)
使い方
SampleScene.unity で確認するのが手っ取り早いです。
保存するクラスについて
クラスは Serializable 属性をつける必要があります。
なお、Dictionary をメンバに使うことは出来ません。
[System.Serializable] public class TestData { public int ID; public string Message; }
リファレンス
jsonSaveLoad.Save(string filename, object data)
クラスの中身をファイルに保存します。
filename .. ファイル名
data .. 保存したいクラス(のインスタンス)
[System.Serializable] public class TestData { public int ID; public string Message; } TestData savedata = new TestData() { ID = 10, Message = "TestData", }; jsonSaveLoad.Save("savedata", savedata);
jsonSaveLoad.Load<T>(string filename)
指定したファイルからクラスデータを取得します。
filename .. ファイル名
戻り値 .. 保存したクラスデータ。なければ(、または失敗したら)null
TestData loaddata = jsonSaveLoad.Load<TestData>("savedata"); string text = $"ID = {loaddata.ID}{Environment.NewLine}" + $"Message = '{loaddata.Message}'{Environment.NewLine}";
jsonSaveLoad.Delete(string filename)
保存したファイルを削除します。
filename .. ファイル名
jsonSaveLoad.Delete("savedata");
ポイント
データを保存するパスは Application.persistentDataPath。
PC であれば不要ですが、iOS などはこのパスでないとアクセス出来なくなってしまいます。
jsonSaveLoad の中でパスを付加しているので、今回のライブラリを使う場合、気にする必要はありません。
問題点
簡単なものならこれで構いませんが、ゲームデータとして扱う場合はもう少し柔軟な機能が欲しくなるかもしれません。
- Dictionary も使えるようにしたい
- JSON 形式だと、ユーザーにもデータがまる見えなので、なんとかしたい
- ユーザーがデータを改変した場合、検知できるようにしたい
これらを実現したライブラリは次の記事にて。