UnityProband Geschrieben 19. Juli 2017 Melden Share Geschrieben 19. Juli 2017 Hallo liebe Unity Freunde! Ich habe jetzt 3 Scenen und wollte diese nacheinander mit dem Secene Manager der unity 5 Version Laden. SceneManager.LoadScene("scene4") Ich wollte per Tastendrück eine Scene laden. Das funktioniert auch recht gut, aber wenn ich mit Hilfe der Funktion LoadScene eine andere Scene laden möchte, dann passiert leider nichts. Den Name der Scene wird per Skript angepasst! Ich habe ja diese Standard Scene, die ja den Index 0 hat. die zweite Scebe hat bei mir den Index 1, aber er will einfach die dritte Scene nicht laden, Muss ich die alte Scene jetzt wieder zerstören? Oder, was mache ich falsch? Die einzelnen Scenen wurden dem Build hinzugefügt, und werden auch mit deren Index angezeigt. Hier mal das Skrip! if(Input.GetKeyDown(KeyCode.A)){ SceneManager.LaodManager.GetActiveScene().buldIndex + scenes); if(scenes < 3 ) { if(!oneTime) { scenes++; oneTime = true; } else { scenes=0 } } } oneTime = false; Ich sterte von der Scene mit dem Index 0. Das ganze wird in der Update Funktion ausgeführt! Die Scene mit dem Index 1 wird geladen und angezeigt! Die int Variabel scenes hat am Anfang den Wert 1. OneTime den Wert false! Was mache ich falsch? VG VG Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 19. Juli 2017 Melden Share Geschrieben 19. Juli 2017 Ich verstehe dein Skript nicht, folgender Code liefert dir nur den Index der aktuellen Szene, aber läd die Szene nicht! int actualScene = SceneManager.GetActiveScene().buldIndex; Eine Szene mit dem nächst höheren Index könntest du so laden: int actualSceneIndex = SceneManager.GetActiveScene().buldIndex; SceneManager.LoadScene(actualSceneIndex + 1); Hier mal ein Codeschnipsel wie es gehen könnte: private int actualSceneIndex; private bool isLoading = false; void Start() { actualSceneIndex = SceneManager.GetActiveScene().buldIndex; } void Update() { { if (Input.GetKeyDown(KeyCode.A) && !isLoading) { LoadSceneNextIndex(); } } void LoadSceneNextIndex() { isLoading = true; SceneManager.LoadScene(actualSceneIndex + 1); } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Stephan F. Geschrieben 19. Juli 2017 Melden Share Geschrieben 19. Juli 2017 kommt bei void LoadSceneNextIndex() { isLoading = true; SceneManager.LoadScene(actualSceneIndex + 1); } ein indexofrange error, wenn ich eine scene mit index lade, der nicht existiert? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 19. Juli 2017 Melden Share Geschrieben 19. Juli 2017 Könnte sein, sicherheitshalber vorher noch prüfen, ob der Index nicht zu hoch wird: public int maxLevelIndex = 2; private int actualSceneIndex; private bool isLoading = false; void Start() { actualSceneIndex = SceneManager.GetActiveScene().buldIndex; } void Update() { { if (Input.GetKeyDown(KeyCode.A) && !isLoading) { LoadSceneNextIndex(); } } void LoadSceneNextIndex() { if ((actualSceneIndex + 1) <= maxLevelIndex) { isLoading = true; SceneManager.LoadScene(actualSceneIndex + 1); } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.