From 320e58c3c36b2123f441da6f4bd3c34aa5460759 Mon Sep 17 00:00:00 2001 From: maikeljh <mjh191003@gmail.com> Date: Fri, 10 May 2024 13:03:06 +0700 Subject: [PATCH] [Fix] Game Over After Finish Game --- Assets/Scripts/Managers/GameOverManager.cs | 1 + Assets/Scripts/Managers/LevelManager.cs | 39 +++++++++++++++++++--- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/Assets/Scripts/Managers/GameOverManager.cs b/Assets/Scripts/Managers/GameOverManager.cs index 97acf05..37bc7de 100644 --- a/Assets/Scripts/Managers/GameOverManager.cs +++ b/Assets/Scripts/Managers/GameOverManager.cs @@ -58,6 +58,7 @@ namespace Nightmare LevelManager.Instance.Exit(); isGameOver = false; statsManager.SaveStats(); + SceneManager.LoadScene("MainMenu", LoadSceneMode.Single); } public void ShowGameOverButtons() diff --git a/Assets/Scripts/Managers/LevelManager.cs b/Assets/Scripts/Managers/LevelManager.cs index cadf0f6..fcb5fc7 100644 --- a/Assets/Scripts/Managers/LevelManager.cs +++ b/Assets/Scripts/Managers/LevelManager.cs @@ -608,10 +608,41 @@ namespace Nightmare public void Exit() { - currentIndex = 0; - currentQuest = 0; - ResetAtt(); - SceneManager.LoadScene(levels[currentIndex], LoadSceneMode.Single); + // Kill Player + GameObject player = GameObject.FindGameObjectWithTag("Player"); + PlayerHealth health = player.GetComponent<PlayerHealth>(); + health.currentHealth = 0; + health.Death(); + + Scene currentLevel = SceneManager.GetSceneAt(0); + for (int i = 0; i < SceneManager.sceneCount; i++) + { + Scene scene = SceneManager.GetSceneAt(i); + if (!scene.name.StartsWith("Cutscene")) + { + currentLevel = scene; + } + else if (SceneManager.sceneCount > 1) + { + SceneManager.UnloadSceneAsync(scene); + } + } + + var audioSources = new List<AudioSource>(); + + foreach (var root in currentLevel.GetRootGameObjects()) + { + audioSources.AddRange(root.GetComponentsInChildren<AudioSource>(true)); + } + + foreach (var source in audioSources) + { + source.mute = false; + } + + isCinematic = false; + + EventManager.TriggerEvent("GameOver"); } public void ResetLevel() -- GitLab