Czy mogę ładować dane w tle, gdy ekran powitalny Unity jest włączony? Jeśli tak to jak?
Próbuję uruchomić kod podczas ekranu powitalnego, a nie tylko ładować zasoby.
Nie udało mi się znaleźć żadnych informacji na ten temat w Google ani w dokumentacji Unity .
Odpowiedzi:
Właśnie wykonałem kilka testów i odkryłem, że konstruktor obiektów w pierwszej scenie jest wywoływany, gdy ekran powitalny jest nadal wyświetlany.
Oto niektóre czasy, które zmierzyłem za pomocą statycznego stopera:
Wygląda więc na to, że możemy uruchomić skrypt, aby działał prawie 3 sekundy przed końcem ekranu powitalnego (z ustawieniami domyślnymi), uruchamiając go z konstruktora. Możesz spróbować uruchomić kod ładowania (być może w jego własnym wątku).
Tylko uważaj, że prawdopodobnie jest to wywoływane z wątku ładującego, więc ponieważ nie jesteśmy w głównym wątku, będziemy nieco bardziej ograniczeni tym, co wolno nam tutaj robić. Jeśli próbujesz wykonać konkretną czynność, która nie jest obsługiwana w wątku ładującym, rozważ opublikowanie nowego pytania zawierającego szczegółowe informacje o aplikacji, a my możemy spróbować znaleźć rozwiązanie tego problemu.
źródło
Update()
tyknięcie 2,9 sekundy po uruchomieniu konstruktora. To wszystko, co mogę rozpoznać przy obecnym oprzyrządowaniu.Najlepiej jest stworzyć własny ekran ładowania i ustawić go jako scenę początkową. Następnie z tej prostej sceny użyj Menedżera scen, aby załadować następną scenę asynchronicznie w tle .
Nie mogę znaleźć informacji, aby to potwierdzić, ale z moich obserwacji wynika, że Unity ładuje twoją początkową scenę podczas wyświetlania ekranu powitalnego.
Na niektórych platformach gra zaczyna działać, zanim zniknie ekran powitalny, jeśli ładowanie jest wystarczająco szybkie.
Wszystko to można zmienić w dowolnym momencie, na dowolnej platformie, w dowolnej aktualizacji wersji. Nie ma gwarancji, że będzie to spójne, więc lepiej jest użyć własnego ekranu ładowania.
źródło
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:
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 .
źródło