Files
2025-05-26 00:46:28 +02:00

49 lines
2.1 KiB
C#

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);
}
}