Un script est un document écrit en langage informatique (C#) afin qu’il puisse être interprété par Unity.
Il permet de créer ses propres composants, des mécaniques et systèmes de jeu personnalisés.
Par exemple : ajouter de la force à un objet, détruire un ennemi, ouvrir une porte etc..
Un script est attaché à un objet, c’est-à-dire qu’on le place sur un GameObject et qu’il aura des actions sur cet objet. Par exemple, quand on parle de collisions, on parle de collision entre l’objet sur lequel est le script et les autres objets. Mais ça ne nous empêche pas d’avoir des interactions avec d’autres GameObject !
Pour créer un Script : Clic droit dans la fenêtre Projet -> Create -> C# Script. Donnez lui un nom qui reflète le système que vous souhaitez créer.
Ajouter un Script à un GameObject : En ayant sélectionné l’objet, Drag and drop le Script depuis la fenêtre Projet vers l’inspecteur OU ajouter le Script comme un composant
Pour ouvrir un script et pouvoir le modifier, il te suffit de double-cliquer dessus. L’interface Monodevelop ou VisualStudio va s’ouvrir et tu vas pouvoir écrire/modifier ton script en C# !
Lien vers la doc Unity : Script
Unity interprète toujours le code en C# du haut vers le bas. Il convient donc de bien séparer les blocs de code, ainsi que les lignes entre elles.
En fonction de l’élément et de sa place, les séparateurs seront différents.
Les couleurs permettent de différencier la nature des différents éléments.
3 éléments de “grammaire” importants :
Tous les scripts porte un nom qui donne le nom à la class du script. Ce sera toujours LE MÊME nom pour les deux (comme sur l’image ci-dessous).
Lorsque l’on crée un nouveau script, on obtient le début de code suivant :
On va pouvoir agir sur plusieurs parties du code :
Elles permettent de déclarer des valeurs ou des composants.
Dans notre exemple “ennemi” est un objet de type GameObject. Il est “public” car nous souhaitons qu’il apparaisse dans l’inspecteur.
En C#, lorsque l’on déclare une variable, on va aussi déclarer son type. Plusieurs types de variables existent :
Attention, les float s’écrivent avec un f à la fin en C# ! Par exemple : monfloat = 12.5f
Les composants peuvent également être des variables, quelques exemples :
Après avoir déclaré nos variables, on va les initialiser (leur donner une valeur de départ). Par exemple :
Les vecteurs peuvent également être des variables : Ils permettent de renseigner la Position de x, y, (Vector2) et de x,y,z (Vector3) et de la modifier si besoin (newVector = … )
En C#, tu peux augmenter ou réduire une variable simplement :
Elles permettent de créer des comportements, en fonction de variables et de faire beaucoup d’autres choses !!
Les fonctions sont appelées à des moments précis comme la Start() ou la Update(), d’autres vont avoir des actions sur nos objets. On peut créer des fonctions selon les mécanismes que l’on veut créer.
Dans notre exemple la fonction Destroy, va détruire le GameObject “platform” déclaré au dessus.
(Ne pas tenir compte du void devant les fonctions)
(If en anglais, si en français) Elles permettent de d’interroger le code.
Dans notre exemple, la fonction ne s’exécutera que SI le tag de l’objet touché est “ennemi”.
Regarde plus bas pour en savoir plus !
Using : En fonction de ce que contient le script, on peut rajouter des “librairies” qui permettent d’utiliser des fonctions spéciales. Par exemple using UnityEditor.SceneManagement permettra de contrôler tout ce qui concerne la gestion de scène.
Les plus fréquents :
Public class Test : MonoBehaviour : La class est ce qui délimite le script, attention le nom du script (ici “test”) doit avoir le même nom que le fichier du script qui apparaît dans le projet.
Public : (en bleu) Signifie que la variable sera accessible directement dans l’inspecteur. On crée toutes les variables publics en haut, avant la fonction Start() et on n’oublie pas de les remplir des objets correspondants dans l’inspecteur. Les variables ‘public’ sont aussi accessibles depuis un autre script !
void Start() : Dès que le bouton Play est pressé, ce qui est dans la fonction Start(), se produit, une seule fois.
void Update() : A chaque seconde, la fonction Update (Actualisation en français), exécute le code contenu dans sa fonction.
GameObject (en vert et avec des majuscules) : Réfère au type de variable utilisée.
gameobject ( en blanc avec des minuscules) : nom de la variable.
transform : position exacte de l’objet.
Debug.Log(“…”) : Le Debug.Log nous permet de vérifier les bugs. Dans notre exemple on souhaite savoir si il y a bien eu une collision. Dans la console, le message orange et entre guillemet s’affichera.
N’oublie pas de mettre des point-virgules à la fin de chaque ligne et fermer tes accolades !
Par exemple, je peux créer une variable de vie pour un GameObject et si ma variable de vie est égale à 0, je détruis mon GameObject :
Pour déclencher un événement en fonction d’un clic de souris ou d’une touche appuyée, on va aussi utiliser les conditions :
En C#, les opérateurs OU et ET s’écrivent de la manière suivante :
Je déclare mon bool et je lui donne une valeur de départ.
Un booléen est une variable qui prend comme valeur ‘vrai’ (true) ou ‘faux’ (false).
Pour vérifier si mon bool est vrai ou faux, on va simplement noter :
Si tu as besoin de vérifier la valeur d’une variable d’un autre script, tu peux le faire comme suit :
-> Si le booléen ‘attaque’ du script ‘PlayerAnimation’ sur le GameObject ‘Player’ est vrai alors..
Pour customiser tes scripts, tu vas avoir besoin de quelques fonctions très utiles :
Créer des listes pour sélectionner plusieurs GameObject dans l’Inspector :
Faire un mouvement continu :