Loupe

[Unity] Créer des menus personnalisés

L’éditeur d’Unity est un outil très puissant qui autorise énormément de personnalisation. Nous allons voir comment créer un menu simple, avec une validation et comment prioriser les items.

MenuItem simple

   1: using UnityEditor;
   2: using UnityEngine;
   3:  
   4: public class MyCustomMenu : MonoBehaviour
   5: {
   6:   [MenuItem("MyMenu/Hello world")]
   7:   private static void SayHello()
   8:   {
   9:     Debug.Log("Hello world!");
  10:   }
  11: }

MenuItem(string itemName);

MenuItem avec raccourcis

   1: using UnityEditor;
   2: using UnityEngine;
   3:  
   4: public class MyCustomMenu : MonoBehaviour
   5: {
   6:   [MenuItem("MyMenu/Hello world %h")]
   7:   private static void SayHelloWithShortcut()
   8:   {
   9:     Debug.Log("Hello world!");
  10:   }
  11: }

MenuItem(string itemName);

Dans cet exemple, le raccourcis est ajouté en utilisant le mot clé %h. Pour plus d’informations sur les syntaxes pouvant être utilisées : http://docs.unity3d.com/ScriptReference/MenuItem.html

MenuItem avec validation

   1: using UnityEditor;
   2: using UnityEngine;
   3:  
   4: public class MyCustomMenu : MonoBehaviour
   5: {
   6:   [MenuItem("MyMenu/Hello world")]
   7:   private static void SayHello()
   8:   {
   9:     Debug.Log("Hello world!");
  10:   }
  11:  
  12:   [MenuItem("MyMenu/Hello world", true)]
  13:   private static bool CanSayHello()
  14:   {
  15:     return Selection.activeGameObject != null;
  16:   }
  17: }

MenuItem(string itemName, bool isValidateFunction);

Le deuxième paramètre du constructeur vous permet d’ajouter une méthode de validation qui sera lancée avant la méthode principale.

MenuItem avec priorisation

   1: using UnityEditor;
   2: using UnityEngine;
   3:  
   4: public class MyCustomMenu : MonoBehaviour
   5: {
   6:   [MenuItem("MyMenu/Hello world", false, 1)]
   7:   private static void SayHello()
   8:   {
   9:     Debug.Log("Hello world!");
  10:   }
  11:  
  12:   [MenuItem("MyMenu/ByeBye", false, 3)]
  13:   private static void SayBye()
  14:   {
  15:     Debug.Log("Bye bye!");
  16:   }
  17: }

MenuItem(string itemName, bool isValidateFunction, int priority);

Le troisième paramètre du constructeur vous permet de spécifier un degré de priorisation afin d’ordonner l’affichage de la liste.

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus