PlayerPrefs Save Helper
Type-safe PlayerPrefs wrapper with support for bool, Vector3, Color, and any serializable object via JSON.
How to Use
1
No setup required — SaveHelper is a static utility class
2
Save bool: SaveHelper.SetBool("muted", true)
3
Save Vector3: SaveHelper.SetVector3("checkpoint", transform.position)
4
Save object: SaveHelper.SetObject("settings", mySettings)
5
Load: var pos = SaveHelper.GetVector3("checkpoint")
6
Check: SaveHelper.HasKey("checkpoint")
7
For file-based saves with multiple slots, use JSON Save Utility instead
Source Code
C#
using UnityEngine;
/// <summary>
/// Type-safe PlayerPrefs wrapper. Supports bool, Vector3, Color,
/// and any serializable type via JSON.
/// </summary>
public static class SaveHelper
{
// ---- Bool ----
public static void SetBool(string key, bool value)
{
PlayerPrefs.SetInt(key, value ? 1 : 0);
}
public static bool GetBool(string key, bool defaultValue = false)
{
return PlayerPrefs.GetInt(key, defaultValue ? 1 : 0) == 1;
}
// ---- Vector3 ----
public static void SetVector3(string key, Vector3 value)
{
PlayerPrefs.SetFloat(key + "_x", value.x);
PlayerPrefs.SetFloat(key + "_y", value.y);
PlayerPrefs.SetFloat(key + "_z", value.z);
}
public static Vector3 GetVector3(string key, Vector3 defaultValue = default)
{
return new Vector3(
PlayerPrefs.GetFloat(key + "_x", defaultValue.x),
PlayerPrefs.GetFloat(key + "_y", defaultValue.y),
PlayerPrefs.GetFloat(key + "_z", defaultValue.z)
);
}
// ---- Color ----
public static void SetColor(string key, Color value)
{
PlayerPrefs.SetFloat(key + "_r", value.r);
PlayerPrefs.SetFloat(key + "_g", value.g);
PlayerPrefs.SetFloat(key + "_b", value.b);
PlayerPrefs.SetFloat(key + "_a", value.a);
}
public static Color GetColor(string key, Color defaultValue = default)
{
return new Color(
PlayerPrefs.GetFloat(key + "_r", defaultValue.r),
PlayerPrefs.GetFloat(key + "_g", defaultValue.g),
PlayerPrefs.GetFloat(key + "_b", defaultValue.b),
PlayerPrefs.GetFloat(key + "_a", defaultValue.a)
);
}
// ---- Generic JSON ----
/// <summary>
/// Save any serializable object as JSON to PlayerPrefs.
/// </summary>
public static void SetObject<T>(string key, T obj)
{
string json = JsonUtility.ToJson(obj);
PlayerPrefs.SetString(key, json);
}
/// <summary>
/// Load a serializable object from PlayerPrefs JSON.
/// </summary>
public static T GetObject<T>(string key, T defaultValue = default)
{
string json = PlayerPrefs.GetString(key, "");
if (string.IsNullOrEmpty(json))
return defaultValue;
return JsonUtility.FromJson<T>(json);
}
// ---- Utility ----
/// <summary>Check if a key exists.</summary>
public static bool HasKey(string key) => PlayerPrefs.HasKey(key);
/// <summary>Delete a specific key.</summary>
public static void Delete(string key) => PlayerPrefs.DeleteKey(key);
/// <summary>Delete all saved data.</summary>
public static void DeleteAll() => PlayerPrefs.DeleteAll();
/// <summary>Save changes to disk immediately.</summary>
public static void Save() => PlayerPrefs.Save();
}