【Unity】Easy Save 3 でJSONフォーマットのセーブデータを保存する
Easy Save 3 は簡単にセーブデータを扱える便利アセットです。
// セーブ
var valeue = 100;
ES3.Save<int>("key", value);
// ロード
var value = ES3.Load<int>("key");
キーを指定して変数を。たったこれだけでセーブ/ロードが出来ます。
データをまとめて保存したい
Easy Save 3 は string 型も保存できます。そこでJSONの文字列として保存することでクラスのデータ毎保存してみたコードがこちらです。
using UnityEngine;
[System.Serializable]
public class SoundConfig
{
/// <summary>
/// タグ
/// </summary>
public static string SAVE_KEY = typeof(SoundConfig).Name;
/// <summary>
/// サウンドは有効か?
/// </summary>
public bool enable = true;
/// <summary>
/// 初期設定
/// </summary>
public void Default()
{
enable = true;
}
/// <summary>
/// 初期設定
/// </summary>
public void Setup(SoundConfig _config)
{
enable = _config.enable;
}
/// <summary>
/// セーブ
/// </summary>
public void Save()
{
var json = JsonUtility.ToJson(this);
ES3.Save<string>(SAVE_KEY, json);
}
/// <summary>
/// ロード
/// </summary>
public void Load()
{
if (ES3.KeyExists(SAVE_KEY))
{
var json = ES3.Load<string>(SAVE_KEY);
var config = JsonUtility.FromJson<SoundConfig>(json);
Setup(config);
}
else
{
Default();
}
}
}
System.Serializable を指定し class をシリアライズ対象とします。Save ではclass を一度JSONの文字列に整形しその後文字列としてEasy Save 3 を使ってセーブデータを保存しています。クラスの中身をまとめて保存することが出来る様になります。