Коротка відповідь - ні , цього не можна робити.
Обидва вище відповіді правильні з точки зору управління сценами. Ви можете використовувати Scene Manager для завантаження сцени, а оскільки він асинхронний, ви можете запускати інший код паралельно.
Перегляньте документацію на SceneManager.LoadScene для отримання більш детальної інформації.
Найближчим ви можете дістати свій код якомога швидше після запуску гри - це запустити його з першої сцени з крихітним слідом. Назвемо це сценою сплеску . Єдине, що воно містило б - це ваше зображення сплеску та контролер, на якому працює потрібний код та завантажується інша сцена.
Оскільки він має невеликий слід, він завантажиться дуже швидко і, таким чином, зробить ваш код майже миттєвим. Потім ви можете робити те, що вам потрібно зробити, а потім завантажити іншу сцену .
Інша річ, яку ви можете спробувати - це видалити "заставку", видалити будь-які зображення, які ви хочете там відобразити. Це буде трохи швидше, оскільки він не завантажується спочатку.
Таким чином, потік буде приблизно таким:
- Екран заставки (зображення тут немає, просто зробіть його чорним)
- Сплеск сцени (невеликий слід із початковим кодом та наступним завантажувачем сцени)
- Інтро-сцена (звичайна вступна сцена)
- .... (інші сцени, як завжди)
Менша сцена швидше завантажується. Ви можете використовувати щось на зразок контролера бризок, приєднаного до будь-якого об’єкта на завантаженому екрані заставки .
using UnityEngine;
using UnityEngine.SceneManagement;
public class SplashController: MonoBehaviour
{
void Start()
{
// RunSomeSyncMethod();
SceneManager.LoadScene("OtherSceneName", LoadSceneMode.Additive);
}
}