La réponse courte est non , vous ne pouvez pas faire ça.
Les deux réponses ci-dessus sont correctes en termes de gestion de scène. Vous pouvez utiliser Scene Manager pour charger la scène et comme il s'agit de la synchronisation, vous pouvez exécuter d'autres codes en parallèle.
Consultez la documentation de SceneManager.LoadScene pour plus de détails.
Le plus proche possible de l'exécution de votre code le plus rapidement possible après le démarrage du jeu est de l'exécuter à partir de la première scène avec une empreinte minuscule. Appelons ça Splash Scene . La seule chose qu'il contiendrait est votre image de démarrage et votre contrôleur exécutant le code nécessaire et chargeant une autre scène.
Puisqu'il a une faible empreinte, il se chargera très rapidement et fera ainsi fonctionner votre code presque instantanément. Vous pouvez ensuite faire ce que vous avez à faire et charger ensuite Autre scène .
Une autre chose que vous pouvez essayer est de supprimer "écran de démarrage", de supprimer toutes les images que vous souhaitez y afficher. Ce sera juste un peu plus rapide car il ne sera pas chargé initialement.
Donc, le flux serait quelque chose comme ceci:
- Écran de démarrage (pas d'image ici, il suffit de le rendre noir)
- Scène Splash (petite empreinte avec votre code initial et le chargeur de scène suivant)
- Scène d'intro (scène d'intro régulière)
- .... (autres scènes comme d'habitude)
Plus la scène est petite, plus elle se charge rapidement. Vous pouvez utiliser quelque chose comme un contrôleur Splash attaché à n'importe quel objet dans l' écran Splash chargé .
using UnityEngine;
using UnityEngine.SceneManagement;
public class SplashController: MonoBehaviour
{
void Start()
{
// RunSomeSyncMethod();
SceneManager.LoadScene("OtherSceneName", LoadSceneMode.Additive);
}
}