starOfWords/Assets/Scripts/SaveSystem.cs
portakal ecb1c9edea Initial commit: Star of Words Unity project
Snapshot of the existing Unity 6 language-learning word game before any
refactoring. Adds Unity .gitignore and .gitattributes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 15:31:20 +03:00

135 lines
3.6 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using UnityEngine;
using System.Collections.Generic;
public static class SaveSystem
{
// ============================================================
// BASIC TYPES
// ============================================================
public static void SaveInt(string key, int value)
{
PlayerPrefs.SetInt(key, value);
PlayerPrefs.Save();
}
public static int LoadInt(string key, int defaultValue = 0)
{
return PlayerPrefs.GetInt(key, defaultValue);
}
public static void SaveFloat(string key, float value)
{
PlayerPrefs.SetFloat(key, value);
PlayerPrefs.Save();
}
public static float LoadFloat(string key, float defaultValue = 0f)
{
return PlayerPrefs.GetFloat(key, defaultValue);
}
public static void SaveBool(string key, bool value)
{
PlayerPrefs.SetInt(key, value ? 1 : 0);
PlayerPrefs.Save();
}
public static bool LoadBool(string key, bool defaultValue = false)
{
return PlayerPrefs.GetInt(key, defaultValue ? 1 : 0) == 1;
}
public static void SaveString(string key, string value)
{
PlayerPrefs.SetString(key, value);
PlayerPrefs.Save();
}
public static string LoadString(string key, string defaultValue = "")
{
return PlayerPrefs.GetString(key, defaultValue);
}
// ============================================================
// JSON LIST / ARRAY SAVE
// ============================================================
public static void SaveList<T>(string key, List<T> list)
{
string json = JsonUtility.ToJson(new Wrapper<T>(list));
PlayerPrefs.SetString(key, json);
PlayerPrefs.Save();
}
public static List<T> LoadList<T>(string key)
{
string json = PlayerPrefs.GetString(key, "");
if (string.IsNullOrEmpty(json))
return new List<T>();
Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(json);
return wrapper.items ?? new List<T>();
}
[System.Serializable]
private class Wrapper<T>
{
public List<T> items;
public Wrapper(List<T> list)
{
items = list;
}
}
// ============================================================
// DELETE SYSTEM
// ============================================================
public static void DeleteKey(string key)
{
PlayerPrefs.DeleteKey(key);
}
public static void DeleteAll()
{
PlayerPrefs.DeleteAll();
}
// ============================================================
// SAFETY BACKUP
// ============================================================
public static void Backup(string key)
{
if (!PlayerPrefs.HasKey(key)) return;
string val = PlayerPrefs.GetString(key, "");
PlayerPrefs.SetString(key + "_backup", val);
PlayerPrefs.Save();
}
public static void RestoreBackup(string key)
{
if (!PlayerPrefs.HasKey(key + "_backup")) return;
string val = PlayerPrefs.GetString(key + "_backup", "");
PlayerPrefs.SetString(key, val);
PlayerPrefs.Save();
}
// ============================================================
// MANUAL SAVE (Performans İyileştirmesi)
// ============================================================
/// <summary>
/// Tüm PlayerPrefs değişikliklerini tek seferde diske kaydeder.
/// Çoklu set işlemlerinden sonra çağırılması önerilir.
/// </summary>
public static void Save()
{
PlayerPrefs.Save();
}
}