Krótka odpowiedź brzmi nie , nie możesz tego zrobić.
Obie powyższe odpowiedzi są poprawne pod względem zarządzania sceną. Możesz użyć programu Scene Manager załadowania sceny scen, a ponieważ jest ona asynchroniczna, można równolegle uruchamiać inny kod.
Spójrz na SceneManager.LoadScene dokumentację po więcej szczegółów.
Abyś mógł uruchomić kod tak szybko, jak to możliwe po uruchomieniu gry, uruchom go od pierwszej sceny z niewielkim śladem. Nazwijmy to Sceną Splash . Jedyne, co zawiera, to obraz powitalny i kontroler uruchamiający potrzebny kod i ładujący inną scenę.
Ponieważ ma mały rozmiar, ładuje się bardzo szybko, dzięki czemu kod działa prawie natychmiast. Następnie możesz zrobić to, co musisz, a następnie załadować Inną scenę .
Inną rzeczą, którą możesz wypróbować, jest usunięcie „ekranu powitalnego” i usunięcie wszystkich obrazów, które chcesz tam wyświetlić. Będzie tylko trochę szybszy, ponieważ początkowo nie zostanie załadowany.
Tak więc przepływ byłby mniej więcej taki:
- Ekran powitalny (brak obrazu, po prostu zrób czarny)
- Scena powitalna (mały ślad z początkowym kodem i modułem ładującym następną scenę)
- Scena wprowadzająca (zwykła scena wprowadzająca)
- .... (inne sceny jak zwykle)
Im mniejsza scena, tym szybciej się ładuje. Możesz użyć czegoś takiego jak kontroler powitalny dołączony do dowolnego obiektu w załadowanym ekranie powitalnym .
using UnityEngine;
using UnityEngine.SceneManagement;
public class SplashController: MonoBehaviour
{
void Start()
{
// RunSomeSyncMethod();
SceneManager.LoadScene("OtherSceneName", LoadSceneMode.Additive);
}
}