Bisakah saya memuat data di latar belakang saat layar splash Unity naik? Jika ya, bagaimana caranya?
Saya mencoba menjalankan kode selama splash screen, bukan hanya memuat aset.
Saya belum dapat menemukan informasi tentang ini di Google atau Dokumentasi Persatuan .
Jawaban:
Saya baru saja melakukan beberapa tes, dan saya menemukan bahwa konstruktor untuk objek dalam adegan pertama benar-benar dipanggil ketika layar splash masih ditampilkan.
Berikut adalah beberapa timing yang saya ukur dengan Stopwatch statis:
Jadi, sepertinya kita dapat memicu skrip untuk menjalankan hampir 3 detik sebelum akhir layar splash (dengan pengaturan default) dengan melepaskannya dari konstruktor. Anda dapat mencoba memicu kode memuat Anda (mungkin dengan utasnya sendiri) dari sana.
Berhati-hatilah karena ini mungkin dipanggil dari utas pemuatan, jadi karena kita tidak berada di utas utama, kita akan sedikit lebih terbatas dengan apa yang diperbolehkan untuk dilakukan di sini. Jika ada hal tertentu yang Anda coba lakukan yang tidak didukung pada utas pemuatan, pertimbangkan untuk memposting pertanyaan baru dengan detail aplikasi Anda dan kami dapat mencoba mencari solusi untuk kasus itu.
sumber
Update()
centang pertama 2,9 detik setelah konstruktor melepaskan. Hanya itu yang bisa saya pahami dengan instrumentasi saat ini.Taruhan terbaik Anda adalah membuat layar memuat Anda sendiri dan mengaturnya sebagai adegan awal. Kemudian, dari adegan sederhana itu, gunakan Manajer Scene untuk memuat adegan berikutnya di latar belakang, secara tidak sinkron .
Saya tidak dapat menemukan informasi untuk mengonfirmasi ini, tetapi dari pengamatan saya, tampaknya Unity memuat adegan awal Anda saat layar splash ditampilkan.
Pada beberapa platform, permainan mulai berjalan sebelum layar splash hilang, jika memuat cukup cepat.
Semua ini dapat berubah kapan saja, di platform apa pun, pada pembaruan versi apa pun. Tidak ada jaminan bahwa ini akan konsisten, jadi Anda lebih baik menggunakan layar memuat Anda sendiri.
sumber
Jawaban singkatnya adalah tidak , Anda tidak dapat melakukannya.
Kedua jawaban di atas benar dalam hal manajemen adegan. Anda dapat menggunakan Scene Manager untuk memuat adegan dan karena async Anda dapat menjalankan kode lain secara paralel.
Lihatlah dokumentasi SceneManager.LoadScene untuk lebih jelasnya.
Yang paling dekat Anda bisa menjalankan kode Anda secepat mungkin setelah permainan dimulai menjalankannya dari adegan pertama dengan jejak kecil. Sebut saja Splash Scene . Satu-satunya hal yang akan dikandungnya adalah gambar splash dan pengontrol Anda menjalankan kode yang diperlukan dan memuat adegan lain.
Karena memiliki footprint kecil, ini akan memuat sangat cepat dan dengan demikian membuat kode Anda berjalan hampir seketika. Anda kemudian dapat melakukan apa yang harus Anda lakukan, dan memuat Pemandangan Lain sesudahnya.
Hal lain yang dapat Anda coba adalah menghapus "splash screen" menghapus gambar yang ingin Anda tampilkan di sana. Ini akan menjadi sedikit lebih cepat karena tidak akan dimuat pada awalnya.
Jadi alirannya akan seperti ini:
Adegan yang lebih kecil lebih cepat akan dimuat. Anda dapat menggunakan sesuatu seperti pengontrol splash yang terpasang ke objek apa pun di layar Splash yang dimuat .
sumber