█▄▀ Les variables
Pour créer une variable, on utilise la syntaxe : variable = valeur

Note : Il est correct de déclarer la variable avec la fonction var, alors pour ne pas vous en apercevoir que maintenant comme moi, je vous le dis : pas besoin d'utiliser var en gml.

Il y a plusieurs types de variables : les variables globale, les variables locales et les variables temporaire.
 
▫ 1- Les variables globales
global.variable = valeur;
Ces variables sont accessibles à partir de n'importe quel script. Elles ne sont effacées qu'à la fin du jeu.
 
▫ 2- Les variables locales
Ces variables sont affectées à un objet. Si l'objet courant est l'objet auquel on veut affecté la variable on précède le nom de la variable par self. :
self.variable = valeur;
Si l'objet courant n'est pas l'objet auquel on veut affecté la variable il faut précéder le nom de la variable par l'id de l'objet auquel on veut affecté la variable :
id_objet.variable = valeur ;


Lorsque le nom de la variable n'est précédent de rien. La variable dépend des paramètres définis lors de l'insertion d'un script dans l'event d'un objet.

Si le script est appliqué à l'objet qui l'appelle (self), la variable est attaché à cet objet.
La variable est précédé de self :
self.variable


Si le script est appliqué à un autre objet (other) impliqué dans l'event (dans le cas d'une collision) le script est attaché à l'autre objet.
La variable est précédé de other :
other.variable


Si le script est appliqué à un type d'objet (id_type_objet), la variable est attaché à toutes les objets du même type.
La variable est précédé du nom de l'objet:
id_type_objet.variable


Remarque : Sachez que tout les noms de sprites, sons, backgrounds, objets etc. retourne un id unique donc une valeur que l'on peut transférer dans un variable.
 
█▄▀ Applications des variables
 
▫ Utilisation des variables globales
On utilise les variables globales pour " centraliser " une valeur utilisée dans plusieurs scripts.

Ex : pour les touches haut
global.up = vk_up;

Il suffit de changer la valeur de la variable global.up pour la changer dans tout les autres scripts qui contiennent global.up. Alors que si vous aviez mis directement vk_up il faudrait remplacer tout les vk_up dans tous les scripts. Il n'est pas possible de redéfinir une variable intégré tel que vk_up:
vk_up = nouvelle_valeur; --> erreur !
 
▫ Utilisation des variables locales
On peut les utiliser pour éviter " trop de conditions " dans un script.

Exemple : Le perso de notre jeu a un habit rouge, mais tout au long du jeu il aura un habit bleu, puis vert.
// script d'initialisation
global.habit_couleur = "rouge";

// script du choix du sprite
if (global.habit_couleur = "rouge") self.sprite_index = habit_rouge_sprite;
if (global.habit_couleur = "bleu") self.sprite_index = habit_bleu_sprite;
if (global.habit_couleur = "vert") self.sprite_index = habit_vert_sprite;
 
Comme nous le voyons dans cet exemple le script choisit le sprite selon une variable global. Imaginez que le perso peut marcher dans les 4 directions et a trois habits. Ça fait 3X4 = 12 conditions rien que pour le script du perso qui marche.
Alors l'idée c'est de définir les sprites spécifiques du personnage dès sa création c'est là que la variable local intervient.
 
// script d'initialisation
global.habit_couleur = "rouge";

// script de création du perso
if (global.habit_couleur = "rouge") {
   self.sprite_droite = habit_rouge_sprite_droite;
   self.sprite_haut = habit_rouge_sprite_haut;
   self.sprite_gauche = habit_rouge_sprite_gauche;
   self.sprite_bas = habit_rouge_sprite_bas;
}

// ... (les autres)

// script du choix du sprite selon la direction
if (direction = 0) self.sprite_index = self.sprite_droite;
if (direction = 90) self.sprite_index = self.sprite_haut;
if (direction = 180) self.sprite_index = self.sprite_gauche;
if (direction = 270) self.sprite_index = self.sprite_bas;
Le script de choix du sprite est réutilisable par d'autre personnages ou monstres. Vous pouvez télécharger le fichier d'exemple. Appuyer 1 pour la tunique vert, et 2 pour la tunique bleu-jaune.