Jump to content
Unity Insider Forum

Scene Manager Problem


UnityProband

Recommended Posts

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

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

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

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...