Ajouter une checkbox
La fenêtre de hiérarchie de l'éditeur Unity, est assez personnalisable. Vous pouvez par exemple y ajouter une case à cocher pour permettre de désactiver l'objet concerné.
Début du script
Créer un dossier Editor et dedans, créer un script C# vide. Comme nous allons modifier l'éditeur, vous devez inclure les éléments relatifs à l'éditeur. Ajoutez donc sous : using UnityEngine;, la ligne suivante : using UnityEditor;. Cela permet à Unity, de comprendre que vous souhaitez accéder aux fonctionnalités propres à l'éditeur.
Supprimez les méthodes start et update, nous n'en avons pas besoin.
Pensez à mettre à votre classe en static et ajoutez-y juste avant :
Cette directive, indique à Unity de charger la classe au chargement, de sorte que notre code sera immédiatement utilisé par l'éditeur.
Retirez aussi l'héritage, car nous n'en avons pas besoin.
Constructeur
Commençons par créer notre constructeur static. C'est facile, il possède le même nom que la classe. Dedans nous n'avons qu'une seule et unique ligne :
Ici, nous faisant appel à la méthode de gestion de la hiérarchie et nous lui ajoutons (+=) notre méthode (ici onHierarchyWindowItemOnGui) qu'il va devoir appeler pour savoir quoi faire.
onHierarchyWindowItemOnGui
Cette méthode prend deux paramètres :
int id
Rect rect
Le premier est l'identifiant de l'instance, le second le rectangle de sélection.
Dans cette méthode static void, nous avons deux paramètres :
Un integer qui est l'ID interne du GameObject
Un Rect qui est le rectangle de sélection.
Commençons par récupérer le GameObject :
Ici, on récupère dans un GameObject : l'élement de la hiérarchie qui est sélectionnée. Comme c'est un objet et non un GameObject, on doit le caster (as GameObject).
Ajoutez une condition : si le GameObject est null alors on quitte la méthode (return vide).
Il nous faut maintenant un rectangle correspondant à la case à cocher. Ce rectangle est utilisé pour l'affichage.
Nous avons choisi que la checkbox permette d'activer ou non le GameObject, nous devons donc l'indiquer à Unity :
Ici, nous récupérons l'état de la checkbox. Enfin, nous changeons l'état de notre GameObject :
Si l'état est différent de celui du GameObject, alors nous lui fournissons le nouvel état. Pour simplifier, nous pourrions directement le modifier.
Remarques
La classe n'a pas besoin d'être static, vous pouvez donc choisir de la garder en tant que classe standard si vous préférez.
Conclusion
Nous savons maintenant comment changer la hiérarchie des objets, afin d'ajouter une case à cocher. Vous pourriez tout à fait vous en servir pour d'autres usages que l'activation ou non d'un GameObject.
Laissez libre cours à vos idées.