using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class SceneLoader : MonoBehaviour { [SerializeField] private int baseSceneIndex; private bool isLoaded; private int currentScene = 0; public int prevScene = 0; private void Awake() { currentScene = baseSceneIndex; // holt sich den Index der aktuellen Szene } public void LoadScene(string sceneName) // ist die Funktion zum gewögnlichen Laden von Szenen { SceneManager.LoadScene(sceneName); } public void LoadNextSceneAdditive() // Lädt die nach Index nächste Szene additiv hinzu. Wird asynchron ausgeführt. { Debug.LogError("Triggered"); if (currentScene >= SceneManager.sceneCountInBuildSettings - 1 || SceneManager.loadedSceneCount > 2) return; // die aktuelle Szene darf nicht die letzte sein und es dürfen nöch keine zwei Szenen geladen sein. int nextScene = currentScene + 1; // setzt den Index für die nächste Szene prevScene = currentScene; // die aktuelle Szene wird zur "Previous Scene". Nun kann sie entladen werden. currentScene = nextScene; // die nächste Szene wird zur neuen "Current Scene". SceneManager.LoadSceneAsync(nextScene, LoadSceneMode.Additive); // nun wird die nächste Szene (in diesem moment dieselbe wie "Current Scene" asynchron hinzugeladen. Debug.Log("Loaded Scene " + nextScene); } public void UnloadPrevSceneAdditive() // Entlädt die Szene, deren Index als "Previous Scene" festgehalten ist. { if (prevScene == baseSceneIndex) return; // Wird nicht ausgeführt, wenn die "Previous Scene" die Basis-Szene ist. SceneManager.UnloadSceneAsync(prevScene); // Die "Previous Scene" wird entladen. if (SceneManager.GetSceneByName("CurrentResults").isLoaded) { SceneManager.UnloadSceneAsync("CurrentResults"); Debug.Log("Unloaded CurrentResults"); } } public void LoadResultsAdditive() // Lädt die Results zur aktuellen Szene { SceneManager.LoadScene("CurrentResults", LoadSceneMode.Additive); } }