Jump to content
Unity Insider Forum

Editor / Build iteriert durch viele Kopien einer Szene nach Aufruf von "LoadSceneAsync"


Unifier

Recommended Posts

Hi Leute,

 

hoffe das ist das richtige Unterforum.

 

Wenn nicht: Bitte ins richtige verschieben, Danke! :)

 

 

Ich habe zwar online gesucht, konnte aber nichts dazu finden.

 

Folgendes:

Am Ende habe ich im Projekt vielleicht maximal drei Szenen.

 

 

In den BuildSettings sind momentan zwei drin, die Intro Szene und die Spielszene.

 

In der IntroSzene steht:

 

	public void changeScene()
	{
		//SceneManager.LoadSceneAsync("FirstRoom_v33");
		SceneManager.LoadSceneAsync(1);

	}

 

Wie ihr seht habe ich schon vom Namen weggewechselt auf den Index der Szene in den Build-Settings - das brachte keine Abhilfe.

 

Sobald das aufgerufen worden ist, iteriert der Editor oder das Build durch eine Unmenge von Kopien der Szene (hinten dran steht "not loaded" ). Wenn durch alle diese Kopien (immer unterschiedlich viele.....) durch ist, dann bin ich da, wo ich gerne direkt wäre: In der eigentlichen Szene ;)

 

Ich hänge mal zwei Screenshots an, damit deutlicher wird, was ich meine.

 

Danke vielmals!

post-6156-0-08618100-1481857656_thumb.png

post-6156-0-82231400-1481857662_thumb.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde ganz stark darauf tippen, dass du changeScene mehr als nur ein Mal aufrufst.

 

Bei LoadSceneAsync ist ja der Clou, dass die "alte" Szene weiterläuft, während die neue geladen wird. Und wenn das, was changeScene auslöst, es immer wieder tut, bis der erste Aufruf fertig ist, dann würde das Ergebnis so aussehen.

 

Ein simpler Fix dafür wäre:

private bool loading;

public void ChangeScene() // Methoden in C# groß schreiben 
{
 if(loading) return;

 loading = true;
 SceneManager.LoadSceneAsync("FirstRoom_v33");
}

Ansonsten wäre aber ein durch den Kontext motivierter Ansatz vermutlich besser. Heißt: Es wäre besser, dafür zu sorgen, dass ChangeScene nicht ständig ausgelöst wird, als ChangeScene so umzuschreiben, dass es 90% der Aufrufe irgnoriert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Sascha,

 

du hast Recht. Der Aufruf zur ChangeScene() erfolgte durch eine AnimateText() Funktion, welche wiederum in der FixedUpdate Methode stand.

 

Mit dem boolschen Wert ist das Problem nun gegessen.

 

Obwohl ich sonst immer viel mit Debug.Log arbeite, habe ich das hier irgendwie verschlafen..... :rolleyes:

 

Thema geklärt, Danke schön!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...