using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameStatePersistenceManager : MonoBehaviour { #region Singleton private static GameStatePersistenceManager _instance; // Public reference to the singleton instance public static GameStatePersistenceManager Instance { get { // If the instance doesn't exist, try to find it in the scene if (_instance == null) { _instance = FindObjectOfType(); // If it's still null, create a new GameObject and add the component if (_instance == null) { GameObject singletonObject = new GameObject(typeof(GameStatePersistenceManager).Name); _instance = singletonObject.AddComponent(); } } return _instance; } } #endregion protected void Awake() { // Ensure there's only one instance if (_instance != null && _instance != this) { Destroy(gameObject); return; } // If this is the first instance, set it as the singleton _instance = this; DontDestroyOnLoad(gameObject); } public void SaveData(string key, object value) { string jsonData = JsonUtility.ToJson(value); Debug.Log($"Saving: {key} = {jsonData}"); PlayerPrefs.SetString(key, jsonData); } public bool HasDataForKey(string key) { return PlayerPrefs.HasKey(key); } public T LoadData(string key) { string jsonData = PlayerPrefs.GetString(key); Debug.Log($"Loading: {key} = {jsonData}"); return JsonUtility.FromJson(jsonData); } }