Comment changer l'ordre d'exécution des scripts au chargement avec Unity 2019 ? Découvrez la notion d'ordre de chargement des scripts ou encore le principe des méthode Start, OnEnable et Awake du framework MonoBehavior de Unity.
Très souvent lors du développement d'un jeu vidéo, ou application, nous avons besoin de contrôler l'ordre d'exécution des scripts afin d'être sûrs que tout se passe bien !
Mais savez-vous vraiment sous Unity, quelles sont les méthodes principales de la classe MonoBehavior ?
Les méthodes Awake - OnEnable et Start
Il est indispensable de bien connaître l'ordre d'exécution des méthodes avant d'envisager de changer l'ordre d'exécution des scripts.
En effet dès qu'une classe étend la classe MonoBehavior de Unity, on a accès a tout plein de méthodes...
Ainsi il faut savoir qu'au démarrage d'un script MonoBehavior les méthodes suivantes sont appelées dans l'ordre:
- Awake : appelée une seule fois dès le lancement du script
- OnEnable: appelée au démarrage si le script est activé (Enable), puis à chaque activation du script (quand on joue avec le disable/enable)
- Start: appelée une seule fois dès le lancement du script, et après Awake
Cas d'étude: Ordre d'exécution
Si maintenant on part de l'idée que nous disposons de 2 scripts, l'un appelant l'autre lors du démarrage du jeu vidéo, on doit alors se poser la question de l'ordre d'exécution des méthodes et des scripts.
En effet si le premier est initialisé au Start, comme le second, il se peut que ce dernier ne soit pas encore prêt (initialisé) quand le premier script l'appellera ...
On peut donc penser mettre le premier script initialisé en Start, qui appelle un second script initialisé en Awake (un loader de datas par exemple).
Cela fonctionnera sans souci, mais nous avons ici géré uniquement l'ordre d'appel des méthodes, mais pas forcément l'ordre d'exécution des scripts.
Or il se peut que pour x raisons ( ex: chargement d'un fichier volumineux dans le second script), le script ne soit pas encore initialisé lors de l'appel par le premier script, qui pourtant fait son appel dans la méthode Start.
Il nous faut donc aller plus loin pour résoudre le souci.
Changer l'ordre d'exécution des scripts au chargement
Heureusement Unity dispose de la possibilité d'indiquer des scripts à charger au démarrage et avant le "default time"...
Visionnez la vidéo et découvrez comment utiliser cette fonctionnalité de Unity :