初心者向け無料便利アセット紹介~Unityで簡単セーブ&ロード編~
ゲームを作る際は大抵実装する必要がある"セーブ&ロード"機能。
Unityでは簡単にセーブ&ロード機能を実装できるPlayerPrefsがありますが
「PlayerPrefsは保存形式が少ないから.……」
「PlayerPrefsはあまり使うなって記事を見たから.……」
などなど、いろいろ理由があるとは思いますが、あまり使いたくない人は多いはず。
また、「そこまで凝ったゲームを作るつもりはないから、あまりお金をかけたくないし……」という人もいるはず!!
そこで今回は、無料 簡単 高機能なセーブ&ロード機能のアセットを紹介します。
QuickSave
アセットストアから無料でダウンロードできるアセットQuickSave。
このアセットは、今から貼るコードをコピペし、好きなように変えていただければすぐに動作します。
using CI.QuickSave;
public class SaveData
{
public string name = "None";
public int age = 20;
}
public static class GameManager
{
public static void Save(SaveData saveData)
{
// 保存先の確認
// Debug.Log("保存先:" + Application.persistentDataPath);
string fileName = "ファイルネーム";
// 暗号化・圧縮設定
QuickSaveSettings settings = new QuickSaveSettings();
// 暗号化方法
settings.SecurityMode = SecurityMode.Aes;
// 暗号化パスワード
settings.Password = "パスワード";
// 圧縮方法
settings.CompressionMode = CompressionMode.Gzip;
// 保存データ書き込み
QuickSaveWriter writer = QuickSaveWriter.Create(fileName, settings);
writer.Write("Name", saveData.name);
writer.Write("Age", saveData.age);
writer.Commit();
}
public static SaveData Load()
{
string fileName = "ファイルネーム";
// 暗号化・圧縮設定 (復号化用)
QuickSaveSettings settings = new QuickSaveSettings();
// 暗号化方法
settings.SecurityMode = SecurityMode.Aes;
// 暗号化パスワード
settings.Password = "パスワード";
// 圧縮方法
settings.CompressionMode = CompressionMode.Gzip;
// 保存データ読み込み
QuickSaveReader reader = QuickSaveReader.Create(fileName, settings);
SaveData saveData = new SaveData();
saveData.name = reader.Read<string>("Name");
saveData.age = reader.Read<int>("Age");
return saveData;
}
}
セーブ関数は、指定のファイルがなければ生成し、ファイルが存在していれば変更した値だけを上書きしてくれました。
複数キャラクターのデータを保存する際は、"ファイルネーム+キャラクターネーム"などにし、キャラクターネームはPlayerPrefsで管理するなど、いろいろ工夫してみて下さい。
また、コードにも書いてあるように、暗号化・圧縮なども簡単に行えます。ただし、暗号化形式は"Aes"が良いようです。
※セーブで登録していないデータをロードし
ようとすると、"QuickSaveException: Root does not exist"というエラーが出ます。このようなエラーが出たらよく確認してみてください。
素晴らしいアセットを作ってくださった制作者さんに感謝を!!