70 lines
2.1 KiB
C#
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
|
|
}
|
|
}
|