SephirothSaveReducedVersion 【Unity のセーブ機能】
- 無料版Digital0 JPY
- 投げ銭用(無料版と同じ)Digital100 JPY

Unity のセーブデータを管理する機能です。 インポートして static メソッドを実行するだけの簡単操作です。 ライセンスは MIT とさせて頂きます。 SephirothTools.SephirothSave.Save<string>("key1", "Hellow World!!"); string loadString = SephirothTools.SephirothSave.Load<string>("key1"); のように使用します。 多くの型を保存できるため、 List<int> 型も保存できます。 SephirothTools.SephirothSave.Save<List<int>>("key2", new List<int>(){1, 2, 3}); List<int> loadList = SephirothTools.SephirothSave.Load<List<int>>("key2"); Save メソッドを実行することで ロード機能を利用できるようになります。 また、その状態で Flush メソッドを実行すると 再起動後もロード機能が使用できます。 逆に言うと Flush メソッドを実行しないと Save した内容はアプリ終了と同時に失われてしまいます。 なので定期的な Flush メソッドの実行が必須になります。 Save の度に Flush を実行すると動作が遅くなるため ある程度のまとまりで Flush を実行しましょう。 実行速度も高速です。 例えば下記の処理は 1000 ミリ秒(1秒) を 超えることがありませんでした。 (5万円のノート PC で確認) 20万回の Save 20万回の Load 100 回の Flush を実行して 1000 ミリ秒なので 速度は早い方だと自負しています。 class SpeedTest { public void Exec() { Human1 save = new(20, 175, "Tom"); for (int i = 0; i < 100; i++) { for (int j = 0; j < 2000; j++) { SephirothTools.SephirothSave.Save<Human1>("key" + j, save); SephirothTools.SephirothSave.Load<Human1>("key" + j); } SephirothTools.SephirothSave.Flush(); } } [System.Serializable] public class Human1 { [System.NonSerialized] public bool isInit; private int age; public int height; public string name; public Human1(int age, int height, string name) { this.age = age; this.height = height; this.name = name; isInit = true; } public int GetAge() { return age; } } PlayerPrefs と同じような記述でプログラミングできるため プログラミングの難易度は限りなく低いと自負しています。 SephirothSaveReducedVersion という名前の通り この機能は SephirothSave の機能縮小版になります。 SephirothSave はセーブデータを圧縮・暗号化して保存します。 セーブデータを改ざんされたくない場合は ご自身で暗号化の機能を実装するか 是非 SephirothSave をご購入下さい。(という宣伝でした) 暗号化は byte 配列を byte 配列に変換するだけなので 簡単に実装できると思います。 ここから少し難しい話をします。 SephirothSaveReducedVersion は BinaryFommatter と呼ばれる機能で セーブデータを保存・復元しています。 これはサーバー上のセーブデータを読み込む場合は 大変危険な仕組みになります。(セーブデータが改ざんされた場合に危険) しかし、復元するのはローカルのセーブデータのため 危険性はないと言って差し支えありません。 (ローカルのセーブデータを改ざんできる時点で危険なため) ただし SephirothSave は圧縮・暗号化して保存するため 安全性は SephirothSave の方がより高いです。