Open1
[Unity] PlayerPrefsで自作クラス保存
int,bool,string以外の型をPlayerPrefsで保存できる
PlayerPrefsHelper
using UnityEngine;
/// <summary>
/// 指定したクラスを string 型の Json 形式で PlayerPrefs クラスにセーブ・ロードするためのヘルパークラス
/// </summary>
public static class PlayerPrefsHelper
{
/// <summary>
/// 指定したキーのデータが存在しているか確認
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static bool IsExistKey(string key)
{
// 指定したキーのデータが存在しているか確認して、存在している場合は true 、存在していない場合には false を戻す
return PlayerPrefs.HasKey(key);
}
/// <summary>
/// 指定されたオブジェクトのデータをセーブ
/// </summary>
/// <typeparam name="T">セーブする型</typeparam>
/// <param name="key">データを識別するためのキー</param>
/// <param name="obj">セーブする情報</param>
public static void SaveObject<T>(string key, T obj)
{
// オブジェクトのデータを Json 形式に変換
string json = JsonUtility.ToJson(obj);
// セット
PlayerPrefs.SetString(key, json);
// セットした Key と json をセーブ
PlayerPrefs.Save();
}
/// <summary>
/// 指定されたオブジェクトのデータをロード
/// </summary>
/// <typeparam name="T">ロードする型</typeparam>
/// <param name="key">データを識別するためのキー</param>
/// <returns></returns>
public static T LoadObject<T>(string key)
{
// セーブされているデータをロード
string json = PlayerPrefs.GetString(key);
// 読み込む型を指定して変換して取得
return JsonUtility.FromJson<T>(json);
}
/// <summary>
/// 指定されたキーのデータを削除
/// </summary>
/// <param name="key"></param>
public static void RemoveObject(string key)
{
// 指定されたキーのデータを削除
PlayerPrefs.DeleteKey(key);
}
/// <summary>
/// すべてのセーブデータを削除
/// </summary>
public static void AllClear()
{
// すべてのセーブデータを削除
PlayerPrefs.DeleteAll();
}
/// <summary>
/// 整数データのセーブ
/// </summary>
/// <param name="key"></param>
/// <param name="saveValue"></param>
public static void SaveInt(string key, int saveValue)
{
// 整数データのセットとセーブ
PlayerPrefs.SetInt(key, saveValue);
PlayerPrefs.Save();
}
/// <summary>
/// 整数データのロード
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static int LoadInt(string key)
{
// 整数データのロード
return PlayerPrefs.GetInt(key);
}
/// <summary>
/// 文字列データのセーブ(主に DateTime 構造体のセーブに使う)
/// </summary>
/// <param name="key"></param>
/// <param name="saveValue"></param>
public static void SaveString(string key, string saveValue)
{
PlayerPrefs.SetString(key, saveValue);
PlayerPrefs.Save();
}
/// <summary>
/// 文字列データのロード(主に DateTime 構造体のロードに使う)
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string LoadString(string key)
{
return PlayerPrefs.GetString(key);
}
/// <summary>
/// 文字列データのセーブ(主に DateTime 構造体のセーブに使う)
/// </summary>
/// <param name="key"></param>
/// <param name="saveValue"></param>
public static void SaveFloat(string key, float saveValue)
{
PlayerPrefs.SetFloat(key, saveValue);
PlayerPrefs.Save();
}
/// <summary>
/// 文字列データのロード(主に DateTime 構造体のロードに使う)
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static float LoadFloat(string key)
{
return PlayerPrefs.GetFloat(key);
}
/// <summary>
/// Boolデータのセーブ
/// </summary>
/// <param name="key"></param>
/// <param name="saveValue"></param>
public static void SaveBool(string key, bool saveValue)
{
PlayerPrefs.SetInt(key, saveValue ? 1 : 0);
PlayerPrefs.Save();
}
/// <summary>
/// Boolデータのロード
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static bool LoadBool(string key, bool def = false)
{
int value = PlayerPrefs.GetInt(key, def ? 1 : 0);
return value == 1;
}
}