Les Fondements Essentiels de la Programmation : Les Variables
Nous allons maintenant aborder l'un des fondements essentiels de la programmation : les variables !
Qu'est-ce qu'une variable ?
Pour simplifier, une variable peut être comparée à une boîte qui contient quelque chose. Selon ce que vous souhaitez y mettre, vous devrez choisir la bonne boîte qui est la mieu adapter pour le contenu que vous souhaitez y mettre. Ensuite, vous pourrez consulter ou modifier son contenu à tout moment.
Dans le cadre d'un jeu vidéo, une variable pourrait, par exemple, représenter les points de vie d'un personnage. Vous créerez une variable pour stocker un nombre qui représente les points de vie de votre personnage, puis vous pourrez la modifier ou la consulter en utilisant le nom de la variable.
Comment créer une variable en C# ?
Pour tester les variables, commençons par créer un nouveau script appelé "Stats". Nous allons également créer un cube, qui servira de personnage pour le reste du chapitre. Appelons-le "Joueur".
Pour créer une variable, cela se fait en deux étapes :
- La déclaration du type de la variable. Cela consiste à indiquer au programme quel type de valeur la variable pourra contenir.
- L'assignation d'une valeur à cette variable.
Nous allons donc commencer par déclarer la variable vie
dans votre script. Modifiez le code de votre classe Stats
comme suit.
using UnityEngine;
public class Stats : MonoBehaviour
{
public int vie; // Déclaration de la variable "vie"
void Start()
{
}
void Update()
{
}
}
Explication du Code: Cette ligne de code public int vie;
permet de déclarer notre variable vie. Le mot-clé public
signifie que la variable vie
sera accessible depuis l'extérieur de la classe. Si vous ne mettez pas ce mot-clé, la variable sera privée (private) et inaccessible de l'extérieur. Nous pratiquerons ce concept plus loin dans le chapitre.
Ensuite, le mot-clé int
indique que la variable vie est de type int, ce qui signifie qu'elle pourra contenir un nombre compris entre -2 147 483 648 et 2 147 483 647. Vous ne pourrez pas y insérer de texte ni de nombres en dehors de cette plage.
Voici une page regroupant quelques types de variables numériques en C# que vous pouvez utiliser, en fonction de vos besoins : Liste des variables de type integrals.
Quel type de variable choisir ? Tout dépend de votre besoin. En termes d'optimisation, il est préférable de choisir des types de données plus petits pour économiser de la mémoire. Cependant, avec la puissance des ordinateurs modernes, cela n'est souvent plus nécessaire. Il est donc plus logique d'utiliser un type suffisamment large pour contenir la valeur souhaitée.
Que se passera-t-il si j'utilise une variable de type byte pour stocker le nombre 1000 ?
Si vous créez une variable avec public byte vie;
et que vous tentez d'y assigner la valeur 1000, cela provoquera une erreur ou renverra la valeur 0, car les variables de type byte peut uniquement contenir des valeurs entre 0 et 255(voir image plus haut). Le dépassement de cette plage réinitialisera la valeur de la variable.
Dans la majorité des cas, vous utiliserez les variables de type int
pour les nombres entiers, et de type float
pour les nombres à virgule flottante (décimaux). Nous aborderons les variables à virgule flottante dans un prochain exercice.
Les imprévus avec les joueurs !
Les joueurs sont souvent source d'imprévus et peuvent dépasser vos attentes. Par exemple, si vous définissez une limite théorique pour les points de vie, il est fort probable qu'un joueur trouve un moyen de la dépasser. Il est donc sage de choisir un type de variable avec une plage assez large pour anticiper ces imprévus. Toutefois, si votre maximum est de 100 points de vie, ne choisissez pas un type comme ulong qui peut contenir des milliards de valeurs, simplement "au cas où" qu'un joueur réussi a obtenir un peu plus de points de vie. Bref, rester logique selon les besoins de votre jeu.
Définir une valeur à une variable
Nous avons créé une variable de type int. Maintenant, il nous faut lui attribuer une valeur. Il existe plusieurs façons de faire cela.
1- Dans l'Inspector de Unity : Si votre variable est publique, Unity vous permet de modifier sa valeur directement dans l'Inspector, à condition de sélectionner l'objet qui possède le script. Par exemple, si vous avez un cube avec le script Stats, vous pouvez définir la valeur de vie dans l'Inspector. Cette valeur n'est pas partagée entre les objets, donc chaque objet peut avoir une valeur différente pour la variable vie, même s'il partage le même script.
2- Par le code : Vous pouvez aussi définir la valeur d'une variable directement dans le script, comme ceci :
using UnityEngine;
public class Stats : MonoBehaviour
{
public int vie = 10;
void Start()
{
}
void Update()
{
}
}
Dans ce cas, la variable vie aura la valeur 10 au démarrage du script.
Petit rappel, penser à mettre vos ;
à la fin de vos déclarations!
Pour vérifier la valeur de la variable vie, vous pouvez l'afficher dans la console avec le code suivant :
using UnityEngine;
public class Stats : MonoBehaviour
{
public int vie = 10;
void Start()
{
Debug.log("Vous avez");
Debug.log(vie);
Debug.log("vie");
}
void Update()
{
}
}
Prenez le temps de remarquer cette ligne Debug.log(vie);
Lorsque nous souhaitons utiliser une variable, nous utilisons simplement le nom de la variable et sans guillemet ""
. Contrairement a la ligne suivante Debug.log("vie");
qui permet d'afficher le texte "vie" et non la valeur de la variable du même nom.
Lors de votre test, vous obtiendrez ceci....
Mais c'est écrit 0 pas 10!
Si vous avez initialisé une variable publique dans le script et que vous la modifiez dans l'Inspector, Unity modifiera sa valeur après l'initialisation des variables mais avant l'exécution des méthodes comme Start() ou Update(). C'est pourquoi vous pourriez voir la valeur modifiée à partir de l'Inspector au lieu de la valeur par défaut définie dans le code.
Pour éviter que Unity ne modifie votre variable via l'Inspector, vous pouvez la déclarer en privé avec le mot clé private
. Voici un exemple :
using UnityEngine;
public class Stats : MonoBehaviour
{
private int vie = 10;
void Start()
{
Debug.log("Vous avez");
Debug.log(vie);
Debug.log(" vie");
}
void Update()
{
}
}
Dans ce cas le message affichera bien 10 vie.
Cela empêchera aussi Unity de modifier la valeur de vie dans l'Inspector, mais vous ne pourrez pas non plus y accéder depuis d'autres scripts. Nous verrons plus tard comment contourner ce problème.
Sinon, vous pouvez aussi choisir de travailler votre code avec la valeur de l'inspector.
Et comme dernier choix, vous pouvez aussi écraser la variable en lui assignant une nouvelle valeur dans l'une des méthodes comme ci-dessous.
using UnityEngine;
public class Stats : MonoBehaviour
{
public int vie = 10;
void Start()
{
vie = 20;
Debug.log("Vous avez");
Debug.log(vie);
Debug.log(" vie");
}
void Update()
{
}
}
Remarquer que lorsque j'ai assigner une valeur a ma variable vie, je n'es pas réutiliser les mots clé public
ou private
ni int
. Car, une fois que votre variable est créer vous n'avez plus à déclarer qu'elle est sont type.
Testons maintenant notre code.
Cette fois notre valeur est de 20.
Travailler avec des variables de type string
Nous avons vu comment utiliser des variables numériques, mais comment stocker du texte ? Pour cela, vous devez utiliser le type string.
Voici un exemple :
using UnityEngine; public class Stats : MonoBehaviour { private int vie = 10; private string nom = "DarkSasuke le ninja"; void Start() { Debug.Log("Bonjour"); Debug.Log(nom); } void Update() { } }
Cette fois vous devriez avoir deux messages dans la consoles soit, bonjour et le nom de votre personnage.
Une chaîne de caractères String
est donc un type de variable utilisée pour stocker du texte. Puisque nous assignons du texte à cette variable, le texte doit être entouré de guillemets ""
ou d'apostrophes ''
pour indiquer qu'il s'agit bien de texte et non d'un nom de variable.
À t'elle une limite de caractère comme les variables numériques?
Le type string permet de stocker une chaîne de caractères, comme le nom de votre personnage. Il n'y a pas de limite de taille spécifique pour une string. La variable String est un peu particulière, car il s'agit en réalité d'un objet. Ce qui vous permet également de manipuler une chaîne de caractères à l'aide de méthodes, comme ToUpper(), pour la convertir en majuscules :
using UnityEngine;
public class Stats : MonoBehaviour
{
private int vie = 10;
private string nom = "DarkSasuke le ninja";
void Start()
{
Debug.Log("Bonjour");
Debug.Log(nom.ToUpper());
}
void Update()
{
}
}
Évidemment, il n'est pas nécessaire de connaitre toutes les méthodes que possèdent l'objet string, garder seulement en tête que la variable string est un peu particulière et donc n'a pas de limite de texte.
Existe-t-il d'autres types de variables ?
Il existe de nombreux autres types de variables en C#, et plus d'une centaine en Unity. Si cela existe dans unity, vous pouvez probablement créer une variable pour le contenir.
Par exemple, vous pouvez créer une variable pour contenir le composant Rigidbody d'un objet:
using UnityEngine;
public class Exemple : MonoBehaviour
{
private Rigidbody rigid;
void Start()
{
}
void Update()
{
}
}
Dans cet exemple, la variable rigid peut contenir un Rigidbody. Cela vous permettra, plus tard, de manipuler le composant de l'objet directement avec votre code.
Nous apprendrons plus en détails comment le faire plus loin dans le chapitre.
Conclusion
Avant de continuer, assurez-vous de bien comprendre les variables. Vous devez être capable de :
- Initialiser une variable.
- Lui assigner une valeur.
- Afficher cette valeur dans la console.
Pour l'instant, vous devez être à l'aise avec les types int et string. Dans la prochaine section, nous aborderons des calculs à l'aide de ces variables, un concept très utile pour calculer des dégâts, la santé du joueur, et bien plus encore !
À bientôt pour la suite !
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. - - -