Ressources Magic Makers

 

Site en maintenance

 
Nous sommes actuellement entrain de mettre à jour les ressources de ce site.
Pendant la mise à jour vous pouvez retrouver tous les nouveaux contenus sur le site
 

https://lp-magicmakers.fr/

 
 

UNITY - Créer ses script

Base des scripts

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

Les règles de l'écriture en C# :

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 : 

    • { } : Brackets (Accolades). Elles encadrent tout le code et séparent une fonction d’une autre ou une condition d’une autre.
    •  ; : Point-Virgule. Il permet de clore la déclaration d’une variable ou l’appel d’une fonction.
    • ( ) : Parenthèses. Elles permettent de désigner l’objet ou la variable concernée par la fonction.

La structure du code en C#

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 :

    • Void Start qui s’effectue une fois lorsqu’on lance le script
    • Void Update qui s’effectue à chaque frame
    • Void OnCollisionEnter et OnCollisionExit qui s’effectue lorsqu’on rentre en collision avec un autre GameObject (qui a un collider) et lorsqu’on quitte cette collision
    • Void OnTriggerEnter et OnTriggerExit idem que la collision mais pour un objet dont le collider est en mode ‘Trigger’

Eléments essentiels du code informatique :

Les variables :

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 : 

    • int : la variable est un nombre entier.
    • bool : la variable est soit true soit false.
    • float : la variable est un nombre à virgule. 
    • str : la variable est un morceau de texte.

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 :

 

Les fonctions :

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)

Les conditions

(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 ! 

Glossaire du script en C# :

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 : 

    • using UnityEditor.SceneManagement : Gestion des Scènes (Transitions etc.. )
    • using UnityEditor.UI : Gestion de l’interface
    • using UnityEditor.Audio : Gestion de l’audio

 

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.

Les conditions

La structure d'un condition

  • On utilise le mot clé ‘if’ ( = si)
  • On note entre parenthèse la condition
  • On ouvre (et ferme) des accolades et on note entre les accolades le code à faire si la condition est vraie

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 :

 

Les inputs

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 :

Les opérateurs

En C#, les opérateurs OU et ET s’écrivent de la manière suivante :

Les conditions de booléens

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 :

Accéder aux variables d'un autre script

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..

Fonctions particulières

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 :