La respuesta corta es no , no puedes hacer eso.
Ambas respuestas anteriores son correctas en términos de gestión de la escena. Puede usar Scene Manager para cargar la escena y, dado que es asíncrona, puede ejecutar otro código en paralelo.
Mire la documentación de SceneManager.LoadScene para más detalles.
Lo más cerca que puede llegar a ejecutar su código lo más rápido posible después de que comience el juego es ejecutarlo desde la primera escena con una huella pequeña. Llamémoslo Splash Scene . Lo único que contendría es que la imagen de bienvenida y el controlador ejecuten el código necesario y carguen otra escena.
Como tiene un tamaño reducido, se cargará muy rápido y, por lo tanto, su código se ejecutará casi al instante. Luego puede hacer lo que tiene que hacer y luego cargar Otra escena .
Otra cosa que puedes probar es eliminar la "pantalla de bienvenida", eliminar cualquier imagen que quieras mostrar allí. Será un poco más rápido ya que no se cargará inicialmente.
Entonces el flujo sería algo como esto:
- Pantalla de bienvenida (no hay imagen aquí, solo hazla negra)
- Splash scene (huella pequeña con su código inicial y el siguiente cargador de escena)
- Escena de introducción (escena de introducción normal)
- .... (otras escenas como siempre)
Cuanto más pequeña sea la escena, más rápido se cargará. Puede usar algo como el controlador de bienvenida adjunto a cualquier objeto en la pantalla de bienvenida cargada .
using UnityEngine;
using UnityEngine.SceneManagement;
public class SplashController: MonoBehaviour
{
void Start()
{
// RunSomeSyncMethod();
SceneManager.LoadScene("OtherSceneName", LoadSceneMode.Additive);
}
}