2017-05-26 3 views
1

Ich habe ein einfaches Skript, das meine Szene neu lädt. Die Funktion wird durch ein Ereignis OnClick() aufgerufen.Das erneute Laden der Szene führt dazu, dass Skripte nicht mehr funktionieren

public void ReloadScene(){ 
    SceneManager.LoadScene (SceneManager.GetActiveScene().name); 
} 

Diese Funktion sollte die aktuelle Szene neu starten. Es tut, was ich erwartet habe, aber mit einem Problem: Die meisten Skripte funktionieren nicht.

Die einzigen Skripts, die funktionieren, sind die Audioquelle und ein anderes einfaches Skript, das ich geschrieben habe. Ich bekomme keine Fehler, wenn ich nur "Play" drücke.

Ich benutze Unity 5.6.0b9 Personal.

+0

hey Yummy, es ist möglich, dass Sie vor der größten Verwirrung in Unity stehen: Sie müssen wahrscheinlich dies tun - https://Stackoverflow.com/a/35891919/294884 – Fattie

Antwort

1

Beim Zurückladen einer Szene werden die Variablen zurückgesetzt, es sei denn, Sie verwenden static Variablen. Eine neue Instanz eines Objekts würde jedes Objekt auf seinen ursprünglichen Zustand zurücksetzen. Statische Variablen werden nicht zerstört, da sie nicht zu einer Instanz gehören. Sie können diese manuell zurücksetzen.

DontDestroyOnLoad() ist ein wenig anders. Es fordert Unity auf, ein Objekt nicht zu zerstören, wenn eine neue Szene geladen wird. Diese Objekte werden also nicht zerstört (zurückgesetzt).

Wenn Sie einige Skripts dynamisch hinzugefügt haben, werden diese ebenfalls zerstört. Es sei denn, sie werden zu einem Elternteil DontDestroyOnLoad() hinzugefügt.

+0

Das ist bedauerlich ... gibt es einen einfachen Weg um diese zurückzusetzen, ohne alle Variablen zu durchlaufen? – yummypasta

+0

@yummypasta, ich habe ein paar Fälle geschrieben. Welche ähnelt/entspricht deiner? Ich kann im Detail schreiben, wenn ich weiß, welche am besten zu Ihrem Fall passt. –

+0

Derzeit habe ich nur Skripte im Editor hinzugefügt (nicht über Code). Ich habe keine 'DontDestroyOnLoad()' GameObjects. Es scheint kein Problem mit den Variablen zu sein, aber einige meiner Skripte scheinen nicht "Update()" zu sein. – yummypasta

Verwandte Themen