Comprendre comment structurer les scripts dans Unity peut être déroutant pour les nouveaux développeurs.
Sans une bonne structure, les scripts peuvent devenir désordonnés, rendant le code difficile à maintenir et à déboguer.
MonoBehaviour offre un cadre structuré pour gérer le cycle de vie des scripts, de l’initialisation au nettoyage, en passant par les mises à jour régulières.
Créez votre premier jeu 3D en C# avec Unity, étape par étape.
Dans la section précédente, l’instruction « MonScript : MonoBehaviour » a probablement déjà éveillé votre curiosité. Cela signifie juste que la classe MonScript hérite de la classe MonoBehaviour.
MonoBehaviour est une classe de base fournie par Unity à partir de laquelle tous les scripts Unity dérivent. Lorsque vous écrivez un script en C# pour Unity, vous héritez généralement de la classe MonoBehaviour pour accéder aux fonctionnalités spécifiques de Unity telles que les cycles de vie des scripts, la gestion des événements et les appels de méthodes spéciales.
À titre d’exemple, effacez l’instruction « : MonoBehaviour » dans « MonScript ». Sauvegardez (ctrl + S), ouvrez Unity et lancez le jeu. Vous recevrez immédiatement une erreur. Supprimez le script et tentez de le rajouter à nouveau. L’erreur suivante apparaît :
Cela signifie que les scripts que vous utiliserez directement sur la scène de Unity doivent hériter du MonoBehaviour.
Les méthodes susmentionnées sont des points d’entrée du cycle de vie d’un script.
Awake est appelée lorsque le script est initialisé , soit au moment où le jeu commence, soit lorsque l’objet contenant le script est instancié. Elle est exécutée avant toute autre méthode de cycle de vie, ce qui en fait un endroit idéal pour initialiser des variables ou configurer des états qui doivent être prêts avant l’exécution du jeu .
La méthode Start est appelée avant la première mise à jour de l’objet, mais seulement si le script est activé. Contrairement à Awake, elle n’est appelée qu’une seule fois, et elle est généralement utilisée pour initialiser les composants ou les états qui dépendent d’autres objets ou scripts, car ceux-ci sont déjà initialisés à ce point du cycle de vie.
Update est appelée une fois par frame et est le cœur de la plupart des scripts en Unity. C’est ici que vous placez la logique qui doit être exécutée régulièrement, comme le contrôle des entrées de l’utilisateur, les mises à jour des états, ou tout autre comportement qui change frame par frame.
FixedUpdate est similaire à Update, mais est appelée à des intervalles de temps fixes, indépendamment de la frame rate du jeu. Elle est idéale pour la physique et d’autres mises à jour dépendant du temps, car elle s’exécute de manière prévisible et cohérente, garantissant que les calculs physiques ne sont pas affectés par les variations de la frame rate. Par défaut, elle s’exécute environ 50 fois par seconde. Mais vous pouvez modifier cette fréquence.
OnDisable est appelée lorsque le script ou l’objet sur lequel il est attaché est désactivé. Cela peut se produire lorsque l’objet est désactivé manuellement ou lorsqu’il est détruit. OnDisable est un bon endroit pour nettoyer ou réinitialiser les états, arrêter les coroutines, ou effectuer d’autres tâches de fin de vie pour éviter les fuites de mémoire ou autres comportements indésirables lorsque l’objet n’est plus actif.
Nous allons illustrer le comportement de chacune de ces méthodes en utilisant l’instruction « Debug.Log » permettant d’afficher un message spécifique dans la console unity. Voici ce que nous ajouterons à notre précédent code :
usingSystem.Collections;
usingSystem.Collections.Generic;
usingUnityEngine;
publicclassMonScript : MonoBehaviour {
privatevoidAwake() { Debug.Log("Awake"); }
voidStart() { Debug.Log("Start"); }
privatevoidFixedUpdate() { Debug.Log("FixedUpdate"); }
voidUpdate() { Debug.Log("Update"); }
privatevoidOnDisable() { Debug.Log("OnDisable"); }
}
L’instruction « Debug.Log » contenue dans chacune des méthodes affichera dans la console un message spécifique et prédéfini à chaque fois que l’une ou l’autre de ces méthodes s’exécutera. Par exemple, la méthode Start affichera le message : « Start ».
Sauvegardons les modifications et lançons notre jeu. Voici ce qui apparaît dans la console :
Comme nous pouvions nous en douter, la méthode Awake s’exécute premièrement, suivie de la méthode Start . Ensuite la méthode FixedUpdate suivie par Update qui s’exécute à une fréquence supérieure et variable en fonction des performances de notre machine. La méthode OnDisable quant à elle, s’exécute lorsque nous désactivons le script, par exemple via l’inspecteur ou en quittant le mode play.
En résumé, MonoBehaviour et ses méthodes spécifiques offrent un cadre structuré pour contrôler le cycle de vie des scripts dans Unity, permettant aux développeurs de gérer efficacement l’initialisation, les mises à jour, la physique, et le nettoyage de leurs objets de jeu. Ces points d’entrée du cycle de vie sont cruciaux pour écrire des scripts performants et maintenables dans le développement de jeux Unity.
Nous découvrirons dans l’article suivant une notion essentielle en programmation : les variables.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Qu'est-ce que MonoBehaviour dans Unity ?
Pourquoi utiliser MonoBehaviour pour les scripts Unity ?
Comment fonctionne la méthode Awake dans Unity ?
Quelle est la différence entre Update et FixedUpdate ?
Quand utiliser OnDisable dans un script Unity ?
Conclusion
En utilisant efficacement MonoBehaviour et ses méthodes, vous pouvez structurer des scripts performants et maintenables dans Unity. Comment pourriez-vous approfondir vos connaissances sur l’optimisation des scripts Unity ?