【Unity】Easy Save 3 でJSONフォーマットのセーブデータを保存する

DEVELOP, Unity

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 を使ってセーブデータを保存しています。クラスの中身をまとめて保存することが出来る様になります。

Posted by kazupon