Variables
VoilĆ un mot que tu risques de beaucoup croiser dans lāunivers de la programmation! Si tu suis les ateliers Unity, il y a de fortes chances que tu aies dĆ©jĆ entendu parler des variables. En effet, les variables ne sont pas utilisĆ©es que pour la programmation C#. Presque tous les langages de programmation utilisent des variables!
Dans cette page trouveras :
Qu’est ce qu’une Variable?
Une variable est un outil qui nous permet de stocker de lāinformation en mĆ©moire!
Cāest lāĆ©quivalent dāune boĆ®te, qui va contenir la derniĆØre valeur quāon lui a assignĆ©. Lāavantage de la variable, cāest justement quāelle varie! On peut modifier la valeur quāelle contient et exĆ©cuter des opĆ©rations dessus.
int vie = 10;
Cette dĆ©claration va stocker la valeur 10 dans une variable appelĆ©e vie. A chaque fois quāon voudra rĆ©cupĆ©rer la valeur contenue dans vie, il suffira de lāappeler.Ā
string message = « Il te reste actuellement « + vie +  » points de vie »;
Tu peux utiliser une variable pour affecter une autre variable! Dans cet exemple, la variable message contient la phrase āIl te reste actuellement X points de vieā avec X remplacĆ© par la valeur contenue dans la variable vie.Ā
Il y a une multitude de faƧons dāexploiter les variables dans ton code. Cela permet de garder les informations et ne pas dĆ©pendre dāun cas particulier. Le programme devrait pouvoir fonctionner sans connaĆ®tre dāavance le contenu de la variable!
DƩclarer une variable
Pour utiliser une variable, tu dois la dĆ©clarer. Cela signifie: prĆ©ciser son type, son nom et sa valeur, de cette maniĆØre:Ā
type nom = valeur;
Voici quelques exemples:
int age = 15;
float volume = 0.8f;
string pays = « France »;
Comment nommer tes variables?Ā
Prend lāhabitude de nommer tes variables en camelCase, (littĆ©ralement casse de chameau) cāest-Ć -dire tout attachĆ© avec une majuscule uniquement pour sĆ©parer les mots. Tu nāas pas le droit dāutiliser des caractĆØres spĆ©ciaux comme des accents ou de la ponctuation! Ceci donne:Ā
pouvoir,Ā Ā Ā pouvoirSecondaire,Ā Ā Ā position,Ā Ā Ā pointDeVie,Ā Ā Ā periodeInvincibilite.Ā

La raison pour laquelle cāest bien de prendre lāhabitude dāadopter cette convention, cāest quāelle te permet de plus facilement collaborer avec dāautres dĆ©veloppeurs Unity. En effet, si chacun faisait ce quāil voulait pour nommer une variable, le code deviendrait vite un terrain sans ordres ni rĆØgles quāil serait difficile de s’approprier! Une fois que tu auras maĆ®trisĆ© toutes ces conventions, tu pourras te sentir Ć lāaise en lisant le code dāun autre dĆ©veloppeur Unity!
Types de variables
Chaque variable stocke un type dāinformation. Il faut prĆ©ciser le type au moment de dĆ©clarer la variable!
Voici une liste des types de variables supportƩes par Unity.
Nous allons nous attarder sur les plus importants.
Variables numƩriques: int et float
int score = 10; |
Les variables les plus courantes dans le jeu vidĆ©o sont les variables numĆ©riques! Surtout si tu veux stocker les points, la vie, lāexpĆ©rience, lāargent, la position, la vitesseā¦Ā
- int – pour les nombres entiers (integers en anglais), cāest-Ć -dire les nombres sans virgules.Ā
- float – pour les nombres dĆ©cimaux (aussi appelĆ©s flottants), cāest-Ć -dire les nombres avec virgule.Ā
Remarque quāil est nĆ©cessaire dāajouter la lettre f Ć la fin dāun nombre flottant! Un nombre Ć virgule sans le petit f Ć la fin est considĆ©rĆ© comme de type double (pareil quāun nombre flottant mais prend deux fois plus de place dans la mĆ©moire de ton ordi).
Variables textuelles: string
string nom = « Maker »; |
Bien Ć©videmment, tu peux aussi stocker du texte dans une variable en te servant du type string!Ā
Pour une seule lettre, il existe le type char (pour character en anglais)
char lettre = ‘a’;Ā |
VariablesĀ non-primitives
Enfin, tu verras souvent dans le code plein dāautres types de variables qui ne sont pas considĆ©rĆ©s comme primitifs! Ces variables sont en rĆ©alitĆ© des objets que Unity a crƩƩ pour nous pour quāon puisse les stocker et manipuler
Ā
Voici quelques exemples:
Camera camera; |
Tu peux assigner ces objets comme tu le ferais avec une autre variable, et tu peux mĆŖme faire appel Ć leurs propres variables et fonctions.Ā
Ā
position.x; // pour lire la variable x de l’objet position |
Public ou Private ?
Pour dƩbuter dans le dƩveloppement de jeu vidƩo il est primordial de comprendre la distinction entre des variables qui auront une portƩe publique ou privƩe.
Lorsque la variable est « public » elle pourra être consultée ou modifier en dehors de son script c#, si elle est « private » alors vous ne pourrez agir sur cette variable uniquement depuis le script ou elle a été déclarer.
Par dĆ©faut si on ne met rien devant la variable elle est Private (donc PrivĆ©e, c’est Ć dire cachĆ©e et inaccessible dans l’inspector ou depuis un autre script).
On va donc mettre Public devant la variable pour pouvoir la modifier.
using UnityEngine; voidĀ Update() |
Ce code crĆ©e un champ modifiable dans l’Inspecteur intitulĆ© « Mon PrenomĀ Ā».
GrĆ¢ce au deux Debug.Log, lāun crƩƩ au Start et lāautre dans lāUpdate, on peut voir le PrĆ©nom sāafficher.
On peut dāailleurs retrouver ce champs modifiable dans lāInspector de lāobjet qui porte le Script:
Si on modifie en direct la valeur :
Le texte sāactualise dans la Console :
PortĆ©e dāune variable
La derniĆØre chose importante Ć comprendre dans une variable est sa portĆ©e! En effet, une variable nāexiste que dans le cadre où elle a Ć©tĆ© dĆ©clarĆ©e. On dĆ©limite ce cadre entre les deux accolades entre lesquelles elle se trouve.Ā
Ā

Prenons ce code en exemple. Il y a deux variables qui sont crƩƩes: jour et heure. Tu peux voir un trait de couleur qui indique sur le cƓtƩ pendant combien de temps la variable existe:
- La variable jour est crƩƩe au dĆ©but de la fonction. Elle existe donc jusquāĆ ce quāon atteigne la fermeture de la fonction! Cāest pour Ƨa quāon peut lāutiliser mĆŖme Ć lāintĆ©rieur de la condition.Ā
- La variable heure, par contre, est crƩƩe Ć lāintĆ©rieur de la condition. Elle nāexiste donc plus quand on sort de la condition, ce qui explique pourquoi il y a une erreur quand on essaie de lāutiliser aprĆØs.Ā
La leƧon importante Ć retenir cāest quāil faut toujours avoir en tĆŖte la portĆ©e dāune variable quand on la dĆ©clare! Une variable arrĆŖte dāexister dĆØs lors quāon atteint lāaccolade de fermeture du scope où elle se trouve.Ā
VariablesĀ locales
Ce sont les variables que tu déclares dans les fonctions. Elles se déclarent de cette manière.
private void UneFonctionQuelconque() { |
On dit que la variable est locale car elle nāexiste que dans la fonction où elle a Ć©tĆ© dĆ©clarĆ©e. Une fois sortie de la portĆ©e de la fonction, la variable nāexiste plus.Ā
Ā
VariablesĀ globales
A la diffĆ©rence des variables locales, les variables globales existent en dehors dāune fonction. Elles persistent tant que le script est actif, et sont accessibles par toutes les fonctions de ce script.Ā
Ā
private int level; |
As-tu remarquĆ© que la variable Ć©tait dāabord dĆ©clarĆ©e en dehors de la fonction? Cāest ce qui en fait une variable globale! Il faut bien penser Ć prĆ©ciser sa visibilitĆ© (publique ou privĆ©e)
Les tableaux
Bien souvent, tu auras besoin de ranger les Ć©lĆ©ments de ton jeu dans des collections: lister les ennemis, lister les obstacles, lister les points de sauvegardeā¦etc. Pour stocker ces listes, nous te recommandons dāutiliser une fonctionnalitĆ© trĆØs pratique du C#: les tableaux!
DƩclarer un tableau
int[] numeros = {10, 20, 30, 40}; |
Ces variables ne stockent pas une mais plusieurs valeurs!
Ā
Lire un Ć©lement d’un tableau
Pour accĆ©der Ć un Ć©lĆ©ment du tableau, on utilise son index (numĆ©ro reprĆ©sentant la position de lāĆ©lĆ©ment dans le tableau en partant de zĆ©ro)
voiture[0] /* va renvoyer « Volvo » */ |
Attention! Lāindex commence toujours Ć partir de zĆ©ro (et non de un)!
Par exemple, pour le tableau des numƩros un peu plus haut:

Ā
Obtenir la longueurĀ d’un tableau
Pour compter le nombre dāĆ©lĆ©ments contenus dans le tableau, on peut utiliser la propriĆ©tĆ© Length
voitures.Length |
Ā
Obtenir un Ć©lement alĆ©atoire d’un tableau
On peut utiliser Random.Range() pour obtenir un index entre 0 et le nombre dāĆ©lĆ©ments du tableau!
int aleatoire = Random.Range(0, nomDuTableau.Length); |
Variable Statique
Il peut arriver que tu tombes sur des variables spĆ©ciales qui sont prĆ©cĆ©dĆ©es par le mot static. Tu peux ajouter static Ć nāimporte quelle variable globale pour en faire une variable statique. Mais alors? Quāest-ce que cāest exactement?Ā
La plupart des variables que tu crĆ©es sont considĆ©rĆ©es comme des variables membres. C’est-Ć -dire quāelles appartiennent Ć une instance spĆ©cifique. Les variables statiques, quant Ć elles, appartiennent Ć la classe en gĆ©nĆ©ral.
Si tu as une classe Ennemi avec la variable vie, chaque ennemi aura sa propre vie avec une valeur spécifique. Mais si tu en fais une variable statique, tous les ennemis partageront la même vie, peu importe qui a été touché!
- Pour stocker des variables qui sont communes Ć tous tes objets
- Pour stocker une variable sur la classe en entier plutĆ“t quāun objet spĆ©cifique (exemple: le nombre dāennemis prĆ©sents sur la scĆØne)
- Pour stocker une information qui nāa pas besoin dāinstance (comme le score)
CrĆ©er un Score (Modifier la valeur dāune variable dāun autre Script)
Dans lāexemple quāon va mettre en place, lorsque les Projectiles du Joueur dĆ©truit un Ennemi on gagne 10 Points, Ć toi de l’adapter Ć ton projet !
On va crĆ©er un UI > Text lĆ où va sāafficher le texte Ć lāĆ©cran. Si tu as besoin dāinformation concernant la mise en place dāun Texte Ć lāĆ©cran rend toi sur la Fiche Ressources Menu & UI
On va crĆ©er un nouveau Script quāon va nommer āScoreScriptā puis donner ce Script Ć l’Objet Text quāon vient de crĆ©er Ć l’instant. Voici le Script :
using System.Collections; Ā Ā public Text Score; // On crĆ©e un emplacement de stockage nommĆ© Score de type Text Ā Ā // Start is called before the first frame update Ā Ā void Start() Ā Ā { Ā Ā Ā Ā Score = GetComponent<Text>(); // RĆ©cupĆØre le composant Text qui est sur le gameObject Text et on lāassocie Ć Score Ā Ā } Ā Ā // Update is called once per frame Ā Ā void Update() Ā Ā { Ā Ā Ā Ā Score.text = « Score : « + scoreValeur; // La variable scoreValeur associĆ©e au Text Ā Ā } } |
Puis dans le Script qui dĆ©truit les Ennemies, on va rajouter un if qui prĆ©cise que si l’Ć©lĆ©ment est dĆ©truit par le Projectile alors on ajoute 10 points.
if(other.tag==cible) // pour vĆ©rifier que l’objet qu’on souhaite dĆ©truire a bien le mĆŖme tag que celui assignĆ© sur l’inspecteur |
Attention :
Si le tag de lāĆ©lĆ©ment qui dĆ©truit les Ennemi se nomme āEpeeā ou autre chose adapte ton code !
Et voilĆ !
Par contre si tu as un Script qui redémarre la scène à la mort du héros ou quelque chose du genre, tu devras remettre le Score à Zéro dans ce Script.
Ā Ā void Update() |
Perdre / Gagner des points de vie
Pour voir comment afficher des Variables ou du Texte Ć l’Ć©cran, se rendre sur laĀ Fiche Ressources CanvasĀ
