The script needs to derive from monobehaviour ?

Il est frequent de voir ce méssage dans unity et lorsque c’est le début de votre apprentissage il est assez perturbant.

Il apparait souvent lors de la création de vos premiers scripts, et la c’est la cata !

Que veut dire ce méssage ?

Tout d’abord si vous n’êtes pas a l’aise avec la langue de Shakespaere, voici la traduction en français de ce message : « ne peut pas ajouter le comportement du script « monscript ». le script doit dériver de monobehaviour ».

Nous voila bien avancé ! mais que nous dit la documentation officiel a propos de MonoBehaviour : MonoBehaviour est la classe de base à partir de laquelle chaque script Unity dérive. Lorsque vous utilisez C #, vous devez explicitement dériver de MonoBehaviour. 

Voila qui est plus clair ! notre script doit dériver du MonoBehaviour donc lors de la déclaration de la classe dans le script , ça doit ressembler à ceci :

public class MonScript : MonoBehaviour

  1. On commence par déclarer une classe publique (public class)
  2. Ensuite on indique le nom de notre script (MonScript)
  3. et pour finir on indique que cette classe derive de MonoBehaviour (: MonoBehaviour)

Autres causes possibles ?

Il est possible que ce message s’affiche alors que votre script dérive du MonoBehaviour. Dans ce cas c’est un autre problème mais il se situe dans la plupart des cas de nouveau dans la déclaration de la classe. Voici les choses à verifier :

  • Le nom de votre script contient un caractère interdit (Exemple : un espace). En effet Lorsque vous créer un script le nom que vous lui assignez sera aussi le nom de la classe publique, et lorsque l’on déclare une classe il y a une convention à respecter !

Voici la déclaration de classe générée automatiquement par UNITY

public class MonScript : MonoBehaviour

Le nom du fichier créer dans Unity (Mon(space)Script) ne correspond pas au nom de classe dans le fichier (MonScript). Unity à tous simplement supprimer l’espace ! Pour corriger ce probléme il suffit de supprimer l’espace du nom de fichier dans UNITY.

  • La seconde raison est très similaire a la première, Le nom du script ne correspond pas au nom de la classe à l’intérieur du fichier.

La déclaration de votre classe à l’intérieur du script 

public class MonScript_1 : MonoBehaviour

On observe dans ce cas ci, que le nom de la classe ne correspond pas au nom du script. Donc le message d’erreur se déclenche.

Le MonoBehaviour, C’est quoi ?

Maintenant que vous avez compris pourquoi Unity vous affiche ce jolie message d’erreur, c’est quoi ce fameux MonoBehaviour ?

Pour faire simple, c’est lui qui permet d’utiliser les méthodes comme Awake , Update , OnCollisionEnter , etc… En bref, dans le moteur physique Unity : Tout dépend du MonoBehaviour !

Si vous voulez en savoir plus sur ce « MonoBehaviour » je vous conseil de regarder la vidéo suivante :

YouTube player
A propos de upln 274 Articles
En informatique le problème se situe souvent entre la chaise et le clavier !

Soyez le premier à commenter

Poster un Commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.