Kurze Antwort ist nein , das können Sie nicht.
Beide obigen Antworten sind in Bezug auf das Szenenmanagement korrekt. Sie können den Szenenmanager verwenden , um die Szene zu laden, und da sie asynchron ist, können Sie anderen Code parallel ausführen.
Weitere Informationen finden Sie in der Dokumentation zu SceneManager.LoadScene .
Das Beste, was Sie tun können, um Ihren Code nach Spielbeginn so schnell wie möglich auszuführen, ist, ihn ab der ersten Szene mit geringem Platzbedarf auszuführen. Nennen wir es Splash Scene . Das einzige, was es enthalten würde, ist, dass Ihr Splash-Image und Ihr Controller den erforderlichen Code ausführen und eine andere Szene laden.
Da es nur einen geringen Platzbedarf hat, wird es sehr schnell geladen und Ihr Code wird fast sofort ausgeführt. Sie können dann tun, was Sie tun müssen, und anschließend eine andere Szene laden .
Sie können auch versuchen, "Begrüßungsbildschirm" zu entfernen, um alle Bilder zu entfernen, die Sie dort anzeigen möchten. Es wird nur ein bisschen schneller sein, da es zunächst nicht geladen wird.
Der Fluss wäre also ungefähr so:
- Begrüßungsbildschirm (kein Bild hier, nur schwarz machen)
- Splash-Szene (kleiner Platzbedarf mit Ihrem Anfangscode und dem nächsten Szenenlader)
- Intro-Szene (reguläre Intro-Szene)
- .... (andere Szenen wie gewohnt)
Je kleiner die Szene ist, desto schneller wird sie geladen. Sie können so etwas wie einen Splash-Controller verwenden, der an ein beliebiges Objekt im geladenen Splash-Bildschirm angehängt ist .
using UnityEngine;
using UnityEngine.SceneManagement;
public class SplashController: MonoBehaviour
{
void Start()
{
// RunSomeSyncMethod();
SceneManager.LoadScene("OtherSceneName", LoadSceneMode.Additive);
}
}