OSS(SaveGameFree)を使ってUnityでセーブ・ロード機能を実装する【Unity,SaveGameFree】

今回は,ゲーム制作で無料ものでセーブ・ロード機能を実装してほしいと要望があったので実装してみました

使用したライブラリ

github.com

有料版もありましたので,気になる方は確認してみてください

assetstore.unity.com

ライブラリの機能(GithubPageより)

The below features made Save Game Free excellent:

セーブ・ロード機能の実装

以下のスクリプトでは,以下の機能を実装しています

  • カスタムクラスのデータをデーブ
  • パスワード付きデータで保存
  • デーブデータの暗号化
using _Project.Scripts.Interface;
using BayatGames.SaveGameFree;

namespace _Project.Scripts.Model
{
    public class SaveHandler : ISaveData
    {
        public void Save(SaveDataClass saveDataClass)
        {
            SaveGame.Encode = true;
            SaveGame.Save("SaveData",saveDataClass,"pass");
        }

        public SaveDataClass Load()
        {
            return SaveGame.Load<SaveDataClass>("SaveData",true,"pass");
        }
    }
}

備考

セーブデータの保存場所

デフォルトでは,Application.persistentDataPath に保存されるみたいです

各種プラットフォームのパスの詳細

qiita.com

データの暗号化

データの暗号化

暗号化は SaveGame.Encode = true; で有無を変更できるみたいです

暗号化されているのかの確認

まず,データが保存されていくところまで行きます f:id:ayousanz:20210531152440p:plain

メモ帳で開いてみます f:id:ayousanz:20210531152524p:plain

とりあえずソフトとかを使わない限りは見えてないと思います

パスワード付きデータ

セーブ時

パスワードは,SaveGame.Save("SaveData",saveDataClass,"pass"); という感じで引数にいれれば指定できます

ロード時

セーブデータをロードするときは,SaveGame.Load<SaveDataClass>("SaveData",true,"pass"); という感じで自分で設定したパスワードを入れます

パスワードが間違っている場合は以下のようにロードできないみたいです.

パスワードが違うときに表示されるエラー文

CryptographicException: Padding is invalid and cannot be removed.

f:id:ayousanz:20210531153005p:plain