49 lines
2.1 KiB
C#
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);
|
|
}
|
|
}
|