using UnityEngine; using UnityEngine.SceneManagement; using System.Collections; public class SceneManagerScript : MonoBehaviour { // Liste der Szenennamen private string[] scenes = { "Scene1-passiv", "Scene2-activ", "Scene3-interactiv" }; private int currentSceneIndex = 0; void Start() { // Finde den aktuellen Szenenindex basierend auf der aktiven Szene currentSceneIndex = System.Array.IndexOf(scenes, SceneManager.GetActiveScene().name); } void Update() { // Überprüfe, ob die Taste "K" oder die rechte Maustaste gedrückt wurde if (Input.GetKeyDown(KeyCode.K) || Input.GetMouseButtonDown(1)) { // Überprüfe, ob die aktuelle Szene die letzte Szene ist if (currentSceneIndex == scenes.Length - 1) { // Beende das Spiel QuitGame(); } else { // Lade die nächste Szene StartCoroutine(LoadNextScene()); } } } IEnumerator LoadNextScene() { // Erhöhe den Index und lade die nächste Szene currentSceneIndex = (currentSceneIndex + 1) % scenes.Length; SceneManager.LoadScene(scenes[currentSceneIndex]); // Warte einen Frame, um sicherzustellen, dass die Szene vollständig geladen ist yield return null; // Füge eine Verzögerung von 1 Sekunde hinzu, um sicherzustellen, dass alle Komponenten initialisiert sind yield return new WaitForSeconds(1f); // Initialisiere die Szene InitializeScene(); } void InitializeScene() { // Füge hier Logik hinzu, um den Avatar oder andere Komponenten zu initialisieren Debug.Log("Szene initialisiert"); // Beispiel: GameObject avatar = GameObject.Find("Avatar"); // if (avatar != null) avatar.GetComponent().Initialize(); } void QuitGame() { // Überprüfe, ob das Spiel im Editor läuft #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #else Application.Quit(); #endif } }