2016-04-20 11 views
0

Ich habe mein Hauptmenü; Wenn das Spiel gestartet wird, dauert es zwischen 2 und 12 Sekunden, um die Szene anzuzeigen. Während dieser Zeit ist alles still und der Benutzer kann denken, dass die Anwendung hängt oder abgestürzt ist.Wie man einen Ladebildschirm in Unity erstellt, der herausfinden kann, ob die Szene voll geladen ist

Ich möchte einen einfachen Bildschirm hinzufügen (ich kann eine Leinwand verwenden und eine einfache Animation mit dem Ladetext darauf platzieren), aber ich kann nicht herausfinden, wie Sie tatsächlich sagen, dass die Szene geladen wurde.

Ich habe versucht, den Delegierten "OnLevelWasLoaded", und es ist eine große Lüge, weil der Code läuft dort nicht unbedingt passiert, wenn alles auf dem Bildschirm "Pop" und Sie können beginnen, die Anwendung zu verwenden.

Ich habe versucht, eine zeitgesteuerte Funktion hinzuzufügen, aber es ist total falsch, da ich keine Möglichkeit habe, herauszufinden, ob die Szene geladen oder nicht, so auf einigen Maschinen kann es schneller sein, und das Spiel würde hinter dem laufen Leinwand laden; Wenn ich es zu kurz mache, wird die Szene nicht vollständig geladen und ich würde wieder den gefrorenen Bildschirm zeigen.

Neben OnLevelWasLoaded, gibt es noch etwas, das verwendet werden kann, um abzufangen, wenn die Szene geladen wird?

Antwort

1

können Sie verwenden:

SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single); 

LoadSceneAsync kehrt AsyncOperation, die Sie in Koroutine verwenden können.

Hier finden Sie weitere Informationen finden: Doc

So können Sie eine Lade Szene hinzufügen, die asynchron richtigen Pegel zu laden beginnt, damit Sie sich beim Laden überprüfen abgeschlossen ist.

+0

Ich habe nicht erkannt, dass das Async jetzt auch in Unity frei ist. Ich werde es versuchen, danke für die Antwort. –

Verwandte Themen