Procházet zdrojové kódy

Memory Based Load/save

Priz před 4 dny
rodič
revize
f511cd5604

+ 21 - 1
GAMEN3-ValleyRunner_SanTi036/Assets/Scripts/GameManager.cs

@@ -36,6 +36,9 @@ public class GameManager : MonoBehaviour
     [Header("Procedural")]
     public int worldSeed;
 
+    [HideInInspector] public SaveData inMemorySave = null;
+    public bool HasInMemorySave => inMemorySave != null;
+
 
     void Awake()
     {
@@ -215,7 +218,11 @@ public class GameManager : MonoBehaviour
         return data;
     }
 
-
+    public void SaveInMemory()
+    {
+        inMemorySave = CreateSaveData();
+        Debug.Log("Game saved in memory!");
+    }
 
 
 
@@ -227,6 +234,19 @@ public class GameManager : MonoBehaviour
         StartCoroutine(LoadGameNextFrame(data));
     }
 
+    public void LoadFromMemory()
+    {
+        if (inMemorySave != null)
+        {
+            StartCoroutine(LoadGameNextFrame(inMemorySave));
+            Debug.Log("Loaded game from memory!");
+        }
+        else
+        {
+            Debug.LogWarning("No in-memory save found!");
+        }
+    }
+
     public IEnumerator LoadGameNextFrame(SaveData data)
     {
         yield return new WaitForEndOfFrame(); // wait for scene & map to generate

+ 7 - 0
GAMEN3-ValleyRunner_SanTi036/Assets/Scripts/MenuManager.cs

@@ -5,6 +5,13 @@ public class MenuManager : MonoBehaviour
 {
     public GameObject MainMenuPanel;
     public GameObject SettingsPanel;
+    public UnityEngine.UI.Button loadGameButton;
+
+    void Start()
+    {
+        if (loadGameButton != null)
+            loadGameButton.interactable = GameManager.Instance != null && GameManager.Instance.HasInMemorySave;
+    }
 
     public void StartNewGame()
     {

+ 4 - 18
GAMEN3-ValleyRunner_SanTi036/Assets/Scripts/PauseMenu.cs

@@ -55,34 +55,20 @@ public class PauseMenu : MonoBehaviour
     {
         if (GameManager.Instance != null)
         {
-            SaveData data = GameManager.Instance.CreateSaveData();
-            SaveSystem.Save(data);
-            Debug.Log("Game Saved!");
-            Debug.Log("Saving to: " + Application.persistentDataPath + "/save.json");
-
+            GameManager.Instance.SaveInMemory();
         }
     }
 
-
-
     public void LoadGame()
     {
-        SaveData data = SaveSystem.Load();
-        if (data == null) return;
-
-        if (GameManager.Instance != null)
-        {
-            // Call the coroutine on the instance of GameManager
-            GameManager.Instance.StartCoroutine(GameManager.Instance.LoadGameNextFrame(data));
-            Debug.Log("Pause menu load triggered.");
-        }
-        else
+        if (GameManager.Instance != null && GameManager.Instance.HasInMemorySave)
         {
-            Debug.LogError("GameManager instance not found!");
+            GameManager.Instance.LoadFromMemory();
         }
     }
 
 
+
     public void ReturnToMainMenu()
     {
         Time.timeScale = 1f;