2016-07-29 7 views
2

Ich habe ein Spiel mit drei Szenen, zwei Ebenen Szenen und eine Menüszene. Wenn ich Play auf meiner Levelszene das erste Mal drücke, funktioniert alles einwandfrei, aber wenn ich zur Menüszene gehe und später zur Levelszene zurückkehre, werden die Referenzen auf die dem NetworkManager GameObject beigefügten Skripte zurückgesetzt,Objekt zurücksetzen nach dem Laden einer Szene zum zweiten Mal in Unity

. Bei den in der Abbildung unten gezeigten Skripts wurden beispielsweise alle Referenzen außer den Referenzen, die mit Prefabs in meinen Assets verknüpft waren, zurückgesetzt.

Ich habe versucht, jede Variable mit Code zuzuteilen, anstatt es manuell zu tun, aber selbst das funktioniert nicht.

Dieses GameObject hat dontdestroyonload auf. Warum werden diese Referenzen speziell für dieses Objekt zurückgesetzt?

+0

Alles, was Sie tun, ist unglaublich falsch :) Zum Glück ist die Lösung absolut einfach: http://Stackoverflow.com/a/35891919/294884 – Fattie

+0

@JoeBlow Sie wissen von Tutorials, die mir beibringen, wie man den Übergang machen ? Ich bin mir nicht sicher, wie ich all meine allgemeinen Skripte, Soundeffekte usw. in eine Vorladeszene einfügen kann. Ist diese Vorladeszene eine Notwendigkeit? Kann ich einfach eine Szene mit einer Ladeanimation zwischen den Übergängen erstellen? –

+0

@JoeBlow Ich habe bereits über einhundert Skripte an dieses Spiel angehängt, und es wird immer komplizierter. Ich kann nicht glauben, dass ich so weit gegangen bin, ohne davon zu wissen. –

Antwort

1

Ich habe nicht genug Rep zu kommentieren, aber hast du deine Szene gespeichert, nachdem du die Referenzen zu den Objekten hinzugefügt hast?

Antwort (Von Aaron Ge): Ich deaktivierte nicht auf Laden und im Hintergrund ausführen, und dann wurde mein Problem behoben. Ich bin mir nicht sicher, wie das mein Problem gelöst hat, aber es ist passiert.

Mögliche Erklärung: http://answers.unity3d.com/questions/734445/scripts-in-other-scenes-still-executing.html

Wenn Sie DontDestroyOnLoad auf Objekte, die in einer Szene gesetzt werden, stellen Sie sicher, dass Sie entweder:

laden, die Szene nur einmal. Das nennt man normalerweise eine Ladeszene. Die Szene enthält nur bestimmte Manager-Objekte und wechselt sofort zum Menü Szene/was auch immer ... Sie würden diese erste Szene nie wieder laden.

Wenn Sie die Szene erneut laden möchten und DontDestroyOnLoad für ein oder mehrere Objekte verwendet haben, müssen Sie die Objekte manuell zerstören. Sie können nicht verhindern, dass die Objekte erneut erstellt werden, da sie Teil der Szene sind. Normalerweise werden alle Objekte beim Laden einer neuen Szene automatisch zerstört, DontDestroyOnLoad verhindert dies.

+0

Ja, das ist nicht [email protected] Almond –

+0

Tritt das gleiche Problem auf, wenn du anfängst, indem du zuerst die Menüszene spielst, anstatt das Level zu starten und zurück zu kommen? – Almond

+0

Nein, meine Menüszene ist davon nicht betroffen. Nur dieses spezielle Spielobjekt war von diesem Problem in meiner Levelszene betroffen. @ Almond –

0

Ich deaktiviere nicht beim Laden und im Hintergrund zu zerstören, und dann wurde mein Problem behoben. Ich bin mir nicht sicher, wie das mein Problem gelöst hat, aber es ist passiert!