Unityでセーブデータを扱う機会があったのですが、セーブ方法が色々あるので、それぞれの特徴を以下にまとめました。
結論としては有料で良いのであればEasySaveを買うのが情報が多くて多機能なので無難っぽいです。
PlayerPrefs
概要
- UnityEngineクラスで定義されている標準機能的なセーブ方法
- データはキー・バリューで管理する。
- 書き込み時の永続化タイミングはアプリ終了時、または"PlayerPrefs.Save();"の実行時
- ユーザーに値を改ざんされても良いデータを扱う場合に使える。
save.cs
// load
int volume = PlayerPrefs.GetInt("Volume", 0);
PlayerPrefs.Save();
//save
PlayerPrefs.SetInt("Volume", 50);
保存できるデータ型
- int,float,stringの三種類のみ。
保存先
- OSのレジストリ(WIndowsの場合)
改ざん対策
なし
所感
- 読み込み、書き込みがそれぞれ一行で記述できるので、手軽に扱える。
- 設定情報の保存向け
JSON
概要
- 人間が読めるデータ形式
- 保存したファイルをテキストエディタで開き、内容を確認・編集することができる。
- JSON データをシリアル化、逆シリアル化するための Unity の組み込み API
-
JsonUtility
- 他の .NET JSONと比べると機能が少ないが高速とのこと
- MonoBehaviour や ScriptableObject ベースのオブジェクトに対応
- メインスレッド以外のスレッドでも使える
https://docs.unity3d.com/ja/current/ScriptReference/JsonUtility.html
-
EditorJsonUtility
- UnityEngine型に対応
- Unity エディターで任意のゲームオブジェクトの JSON 表現を作成することができる。
- メインスレッド以外では使用できない(例外が発生)
https://docs.unity3d.com/ja/current/ScriptReference/EditorJsonUtility.ToJson.html
-
保存できるデータ型
- 文字列,数値,null,bool,オブジェクト,配列
保存先
- 任意
改ざん対策
なし
所感
- ユーザーに値を改ざんされても良いデータを扱う場合に使える。
- 読み込み、書き込みがそれぞれ一行で記述できるので、手軽に扱える。
- クロスプラットフォーム対応はやりやすそう。
EasySave
概要
- $75.90(2021年7月11日時点)
- 最小の機能だけならPlayerPlefsと同様に簡素なコードで書けるが、細かい設定等も可能
- ビジュアルスクリプトにも対応
- ファイル圧縮機能あり
保存できるデータ型
- ほぼ全ての型
(ES3Typeを作成することで独自の型も追加できる)
https://docs.moodkie.com/easy-save-3/es3-supported-types/
保存先
- 任意
改ざん対策
- 暗号化可能
参考
所感
- 有料なだけあって、一番利便性が高そう。
Databox – Data editor & save solution
概要
- $42.90(2021年7月11日時点)
- ゲームデータを管理するための総合的なプラグイン。
http://databox.doorfortyfour.com/
保存できるデータ型
- すべての一般的なシリアル化可能なUnityタイプをサポート
- カスタムエディターGUIを使用して独自のタイプとクラスを追加できる
保存先
- 任意
改ざん対策
- 暗号化可能
参考
所感
- 良さげだが日本語情報少な目
その他Asset
Level Save,Bayat - Save System等その他多数