Je vous ai indiqué dans la page précédente que le code serait exécuté de haut en bas. Je vous ai légèrement induit en erreur. En temps normal, c’est effectivement le cas, mais avec Unity, ce n’est pas toujours vrai. Il est en effet possible de choisir le moment où votre code sera exécuté. Cela se fait à l’aide des méthodes de la classe MonoBehaviour.
Dans notre cas, nous avons déjà deux méthodes à notre disposition : Start et Update. Ces deux méthodes sont héritées de la classe MonoBehaviour et peuvent donc être utilisées dans notre classe HelloWorld.
Que fait la méthode Start ?
La méthode Start exécute votre code lors de la première image (frame) de votre scène.
Pour mieux comprendre, je vous invite à ajouter cette ligne de code dans la méthode Start :
Debug.Log('Hello World');
N’oubliez pas de sauvegarder votre script pour que Unity prenne en compte votre nouveau code.
Ensuite, testons notre script. Retournez dans Unity et lancez le mode Play.
Normalement, rien ne se passe. Et c’est tout à fait normal. Tout comme les composants, vous devez ajouter votre script à un objet si vous souhaitez qu’il soit actif.
Note : N'oubliez pas d'arrêter le mode Play avant de faire toute modification.
Vous pouvez ajouter votre script à n'importe quel objet. Pour cet exemple, comme le code n'affecte pas spécifiquement un composant d’un GameObjet, je vais l’ajouter à un objet de type Empty. Ce type d'objet est invisible dans la vue 3D, contrairement à un cube, et est donc idéal pour les scripts qui n’affectent pas physiquement un objet ou qui n’ont pas pour objectif d’être visibles. Pour créer un objet Empty, cliquez sur Create Empty. Je l’ai nommé "debug", car il sera principalement utilisé pour tester notre ligne de code Debug.
Ensuite, vous pouvez ajouter votre script en le faisant glisser sur l’objet dans la scène 3D (impossible dans le cas d'un objet Empty, car il est invisible), sur son nom dans l’Hiérarchie, ou encore en cherchant le nom de votre script dans la section Composants, comme vous le feriez pour un composant de type Rigidbody. Bref, plusieurs options s’offrent à vous.
Relancez maintenant le mode Play. Ouvrez la fenêtre Console située en bas à droite de l’onglet Projet. Et voilà, le message "Hello World" s’affiche une seule fois.
Comme vous pouvez le voir, votre code a été exécuté une seule fois lors du lancement de la scène.
Explication de Debug.Log
Ce que vous avez écrit est en réalité un objet déjà existant, contenu dans la bibliothèque UnityEngine. Vous vous souvenez de celle que le script a incluse tout en haut avec la ligne using UnityEngine;
?
Vous avez donc exécuté la méthode Log de l’objet Debug. Cette méthode affiche les paramètres que nous lui transmettons entre parenthèses ()
, dans la section Console de Unity.
C’est probablement l’une des rares lignes de code que je souhaite que vous reteniez par cœur. Elle nous servira à tester notre code tout au long de ce chapitre.
De plus, remarquez le point-virgule ;
à la fin de la ligne. Le point-virgule marque la fin d’une instruction. Vous le retrouvez aussi sur la première ligne, qui indique l’utilisation de la bibliothèque UnityEngine.
Si vous rencontrez un problème, il est probable que vous ayez oublié votre point-virgule. Cette erreur est très fréquente. Normalement, votre éditeur de texte vous avertira si vous avez oublié le point-virgule.
Faites également attention à la façon dont vous écrivez dans les parenthèses. Puisque nous voulons afficher du texte, les guillemets ""
ou les apostrophes ''
sont essentiels. Si vous oubliez de les inclure, une erreur se produira, car la méthode cherchera une variable nommée Hello World et non le texte "Hello World"
. Nous verrons plus en détail les variables dans la page suivante.
Et la méthode Update ?
Maintenant, supprimez le code contenu dans la méthode Start et placez-le dans la méthode Update, comme ceci :
Sauvegardez le fichier et relancez Play dans Unity, puis observez la console.
Le code sera désormais exécuté à chaque image, c’est-à-dire à chaque fois que votre ordinateur calcule une nouvelle image de votre scène.
L’importance du choix de la méthode d’exécution
De nombreux bugs ou comportements inattendus peuvent se produire si vous placez votre code au mauvais endroit. Il est donc essentiel de comprendre le fonctionnement des différentes méthodes d’exécution.
Par exemple, Update s’exécute à chaque frame calculée par l'ordinateur. Si vous décidez d’y mettre du code pour déplacer un personnage, vous aurez un gros problème. En effet, un ordinateur très puissant exécutera cette méthode plus rapidement qu'un ordinateur moins performant, ce qui entraînera une différence dans la vitesse de déplacement du personnage. Vous comprenez le problème ?
Il faut également prendre en compte l’ordre d’exécution des méthodes. Si vous souhaitez modifier un objet avec Update et ensuite utiliser ce changement dans Start, cela sera impossible. La méthode Start s’exécute une seule fois, au tout début de la scène, avant même Update. Vous devrez donc comprendre l’ordre d’exécution des méthodes utilisées par Unity pour que votre code fonctionne correctement.
Existe-t-il d'autres méthodes ?
Oui, il en existe plusieurs ! Vous pouvez consulter un diagramme de l'ordre d'exécution sur cette page.
Et ce n’est que le début…
Ne vous inquiétez pas, en réalité, vous utiliserez probablement les cinq mêmes méthodes de manière répétée. De plus, il n'est pas nécessaire de retenir tous les noms de ces méthodes par cœur. Il vous suffira de garder à l'esprit qu'elles existent et de connaître les plus importantes.
Nous apprendrons à les utiliser progressivement tout au long de la formation.
L’autocomplétion
Imaginons que vous souhaitiez ajouter la méthode Awake, car selon sa définition, elle s'exécute avant que les objets de la scène ne soient chargés, donc avant Start. Rien de plus simple. Dans votre script HelloWorld, en dehors des méthodes Start et Update, commencez à écrire awake.
Votre éditeur de code proposera alors plusieurs suggestions. En survolant une suggestion, vous pourrez obtenir une brève description.
Vous pouvez ensuite double-cliquer pour l’ajouter, ou utiliser les flèches de votre clavier pour naviguer entre les options et valider votre choix avec la touche Tab.
Cela complétera automatiquement le code et ajoutera les accolades pour former le bloc.
Magie ! L’autocomplétion a ajouté tout le code pour vous !
En plus de vous faire gagner du temps, l’autocomplétion peut vous éviter des erreurs. Il faut savoir qu’en programmation, awake et Awake sont traités comme deux mots différents, car le langage est sensible à la casse (majuscules/minuscules).
En bonus, l’autocomplétion ajoute aussi des éléments faciles à oublier, comme le mot void, qui indique que la méthode ne retourne pas de valeur. Nous reviendrons sur l’utilisation de void plus loin dans le chapitre. Sachez cependant que sans ce mot-clé, votre méthode ne fonctionnera pas.
Conclusion
Dans cette page, il est important que vous reteniez la différence entre les méthodes Start et Update. De plus, vous devez savoir comment utiliser Debug.Log pour afficher un message dans la console.
Dans la prochaine page, nous explorerons les variables et ferons un peu de mathématiques pour créer un personnage avec une propriété: vie !
Cette page ne contient pas de Fichier à Télécharger.
Les cours vous ont aidé et vous souhaitez à votre tour nous aider ?
- - - Vous pouvez partager le site avec vos connaissances, ainsi que le Discord. - - -
- - - Participer à la vie active du site et du Discord. - - -
- - - Faire un petit don pour nous aider à payer le serveur avec le lien ci-dessous. - - -