スポンサーリンク

【Unity】簡単にセーブデータを作成することが出来る EasySaveの使い方

Unity

Unity Version 2021.3.11f1(LTS)

EasySaveとは

EasySaveは、ゲームのデータをセーブ・ロード・暗号化することが出来るアセットです!

using UnityEngine;
//セーブデータ管理クラス(サンプル)
public class SaveManager : MonoBehaviour
{
    private int _stageLevel = 0;        //ステージの進行度(サンプル)
    private float _playTime = 0;        //累計プレイ時間(サンプル)
    private string _playerName = "";    //プレイヤーの名前(サンプル)
    private Vector3 _lastPlayPosition;  //最後にプレイしていた場所(サンプル)

    //データをセーブしたいタイミングで呼び出す
    public void Save()
    {
        ES3.Save<int>("StageLevel", _stageLevel);
        ES3.Save<float>("PlayTime", _playTime);
        ES3.Save<string>("PlayerName", _playerName);
        ES3.Save<Vector3>("LastPlayPosition", _lastPlayPosition);
    }

    //データをロードしたいタイミングで呼び出す
    public void Load()
    {
        _stageLevel = ES3.Load<int>("StageLevel", defaultValue: 1);
        _playTime = ES3.Load<float>("PlayTime", defaultValue: 0);
        _playerName = ES3.Load<string>("PlayerName", defaultValue: "NONE");
        _lastPlayPosition = ES3.Load<Vector3>("LastPlayPosition", defaultValue: Vector3.zero);
    }
}

変数の保存はもちろん、クラスや構造体などさまざまな型のデータを扱うことが出来ます!

保存できる型は以下の公式サイトで確認することが出来ます。

Supported Types - Easy Save for Unity
...

使い方

セーブ

データのセーブを行う時は、ES3.Saveメソッドを使います。

第一引数でセーブデータを識別するためのKeyを設定して、第二引数で保存したい変数を指定してデータのセーブを行います。

ES3.Save<int>("StageLevel", _stageLevel);
ES3.Save<float>("PlayTime", _playTime);
ES3.Save<string>("PlayerName", _playerName);
ES3.Save<Vector3>("LastPlayPosition", _lastPlayPosition);

第一引数のKeyが被っている場合は、後にセーブした変数が保存されます。

ES3.Save<int>("SaveData",_stageLevel);
ES3.Save<float>("SaveData", _playTime); //こちらが上書き保存される

ロード

データのロードを行う時は、ES3.Loadメソッドをつかいます。

第一引数でセーブデータを識別するためのKeyを指定して、第二引数で呼び出したいデータが存在していなかった時の初期値を設定してデータのロードを行います。

_stageLevel = ES3.Load<int>("StageLevel", defaultValue: 1);
_playTime = ES3.Load<float>("PlayTime", defaultValue: 0);
_playerName = ES3.Load<string>("PlayerName", defaultValue: "NONE");
_lastPlayPosition = ES3.Load<Vector3>("LastPlayPosition", defaultValue: Vector3.zero);

ちなみに初期値を設定しなくても使うことが出来ます。

_stageLevel = ES3.Load<int>("StageLevel");
<>の型がセーブ時と違う時はエラーが発生してデータを呼び出すことが出来ません!

セーブデータの削除

セーブしたデータを削除したい時は、ES3.DeleteDirectory、ES3.DeleteFile、ES3.DeleteKeyをそれぞれ使います。

//ディレクトリ丸ごと消す
ES3.DeleteDirectory("GameSaveData");

//ファイル丸ごと消す
ES3.DeleteFile("SaveFile.es3");

//個別にKeyのデータを消す
ES3.DeleteKey("StageLevel");
ES3.DeleteKey("PlayTime");
ES3.DeleteKey("PlayerName");
ES3.DeleteKey("LastPlayPosition");

処理の高速化

セーブする要素が増えてくると、セーブとロードの際に時間がかかるようになってしまいます。

以下の記事で、処理の高速化をする方法を紹介していますので気になる方は覗いてみて下さい!

データが存在しているか

//Keyで保存されたデータが存在してるか
bool existsKey = ES3.KeyExists("StageLevel");

//ファイルが存在してるか
bool existsFile = ES3.FileExists("SaveFile.es3");

//ディレクトリが存在してるか
bool existsDirectory = ES3.DirectoryExists("GameSaveData");

セーブデータの設定

データの保存場所

データの保存場所の設定は、EasySaveウィンドウのSettingsタブで設定することが出来ます。

"Location"では、ファイルの保存場所のタイプを設定することが出来ます。
特別な理由がない限りは、デフォルトのFileで問題ないと思います!

"Directory"では、パスの指定先を設定することが出来ます。
こちらも、デフォルトのPresistent Data Pathで問題ないと思います!

"Default File Path"は、セーブデータのファイル名を指定することが出来ます。
こちらは、好きなファイル名にして大丈夫です!

暗号化の設定

"Encryption"は、セーブデータを暗号化するかを設定することが出来ます。

"Encryption Password"で、パスワードを設定することが出来ます!

管理クラスの生成

EasySaveをプロジェクトに導入すると、"Easy Save 3 Manger"というオブジェクトが生成されます!

このオブジェクトがないと、セーブやロードがうまく動作しないので、消さないようにしましょう!

もし消してしまった場合は、EasySaveウィンドウのAutoSaveタブにある

"Enable Auto Save for this scene"ボタンを押すとシーンに生成されます!

まとめ

今回は、簡単にゲームデータのセーブロードが、実装できるアセットEasy Saveを紹介しました!

データのセーブ&ロードは、どのゲームでも必要になる処理ですが、自前で用意するとなると使い勝手のいいものが出来るまでにとても時間がかかってしまいます。

EasySaveを使えば、どのゲームでもサクッとセーブデータの作成が出来て、暗号化までしてくれるので、ゲーム開発をしている方はぜひ一度試してみてください!

お疲れさまでした!

タイトルとURLをコピーしました