Files
Bachelor-Arbeit-Thomas-Wichert/Assets/SceneManagerScript.cs
2025-07-21 09:11:14 +02:00

70 lines
2.1 KiB
C#

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<AvatarScript>().Initialize();
}
void QuitGame()
{
// Überprüfe, ob das Spiel im Editor läuft
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
}