2016-06-21 12 views
-2

Ich habe eine einfache Szene mit einem SceneManager als Singleton implementiert.Player kann nicht nach dem Neustart

Wenn nur diese Szene verwendet wird, funktioniert es einwandfrei.

Dann habe ich einen Neustart-Button hinzugefügt und Probleme gestartet.

Anfangs hatte ich einige NullReferenceException Problem: Ich fand die Ursache, das Problem lag an einigen Arrays der Singleton-Instanz, die nicht gelöscht wurden; Das Skript hat ein Array mit x Elementen gefunden, aber alle davon waren Null-Referenzen. Also habe ich Code in der Start() Funktion hinzugefügt, um zu überprüfen, ob das Array leer ist oder nicht. Wenn dies nicht der Fall ist, lösche ich das Array (vor dem Start muss das Array leer sein, wenn nicht, ist es ein Array von Null-Referenzen).

Nach der Lösung aller Probleme NullReferenceException (die die Anwendung zum Absturz fuhr), kann ich immer noch nicht die Anwendung nach dem Neustart ausführen.

Die neue Ausgabe ist, dass der Spieler, deren GameObject in der Szene als GameObject mit einem CapsuleCollider definiert ist, ein RigidBody und ein RigidBodyFPSController, nicht nach einem Neustart nicht bewegt. Ich denke, es ist ein Problem mit dem angehängten Skript, das nach dem Neustart möglicherweise nicht neu erstellt wird.

Irgendeine Idee?

+1

Wo bekommen Sie den Nullpointer? Ich habe gerade diesen Code getestet und es funktioniert einwandfrei. Können Sie mehr Details zu Ihrem Problem angeben? – Cabrra

+0

@CabrraWhat Code? Ich kann keinen in seinem Post – Minzkraut

+0

finden, den er den Posten redigierte. Sie können den ursprünglichen Beitrag überprüfen, indem Sie auf den Link "editiert" klicken – Cabrra

Antwort

1

Versuchen

Application.LoadLevel("your_scene"); 

hinzufügen Zu den restart_function/Code, den Sie haben. Dies sollte die Ebene/Szene auf das Original zurücksetzen, das geladen wurde.

0

Ich denke, dass Sie array zuerst mit Spielobjekten initialisieren können und nach hat es festen Bezug in Array, das zuerst definiert wird, so dass es auf die alten Objekte zeigen, die jetzt zerstören, und das Skript versucht, es zu referenzieren. Objekte mit der Erstellung des Arrays null reinitialisieren und Wert zuweisen. oder application.load("scene_name")