Enum Operateur

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Enum Operateur

Message par EmileF » 12 Mai 2021 19:59

Bonjour à tous,

Je cherche à créer un enum genre

public enum Operateur { +, -, *, /};

Je voudrais utiliser cet enum dans un éditeur pour l'inspector.

C# n'accepte pas ce genre d' enum, il lui faut des strings. Même si je mets ces valeurs entre guillemets ça ne marche pas.
Est-ce que quelqu'un connaitrait un moyen de créer un dropdown dans l'inspecteur, permettant de sélectionner ces opérateurs. C'est vrai qu'il me suffirai de créer un champ texte pour taper l'opérateur au clavier mais je préfère pour des raisons de commodité le sélectionner dans une liste déroulable.

Peut-être que quelqu'un connait une solution
merci
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: Enum Operateur

Message par jmhoubre » 13 Mai 2021 02:11

Bonsoir,

plan B, pas super intelligent, mais qui permet d'afficher dans l'inspecteur.

Code : Tout sélectionner

public enum Operateur { Plus, Moins, Multiplier, Diviser};
Ceci ne fonctionne pas (affiche aussi Plus, Moins, Diviser et Multiplier) :

Code : Tout sélectionner

private string plus = "+";
private string moins = "-";
private string diviser = "/";
private string multiplier = "*";

public enum Operateur1 { plus, moins, diviser, multiplier };
En fait, il ne faut pas un string, mais une constante nommée, en gros, un identifiant.

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: Enum Operateur

Message par EmileF » 13 Mai 2021 09:57

Merci beaucoup pour ta réponse,

J'ai modifier mon script selon tes indications
mais dans l'inspecteur, ce n'est pas le signe qui s'affiche mais le texte.
Pour plus de clarté et par manque de place, je préfèrerai que seul le signe s'affiche car je condense tout sur une seule ligne (ça ce n'est pas un problème)
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: Enum Operateur

Message par EmileF » 13 Mai 2021 11:31

Rebonjour,

Voilà, j'ai trouvé une solution, ce n'est peut-être pas la meilleure mais ça marche

J'utilise un array

Code : Tout sélectionner

   
   //Mes opérateurs 
    string[] operateurs = new string[] { "? ", "+", "-", "*", ":" };
    int index; //l'index de l'opérateur courant

   //pour régler la largeur de mes boutons
    private GUILayoutOption miniButtonWidth = GUILayout.Width(30f);


    public override void OnInspectorGUI()
    {
	........
	
	//Je récupère la propriété Operateur de mon script qui est un string 
	SerializedProperty operateur = prop.FindPropertyRelative("Operateur"); 
	
	//Je mets à jour l'index
	index = Array.IndexOf(Operateurs, operateur.stringValue);
        if (index< 0) index = 0;
        
        ......
        
        //et j'affiche le popup pour sélectionner mon opérateur
        index = EditorGUILayout.Popup(index, Operateurs, miniButtonWidth);
        //je mets à jour ma propriété
        operateur.stringValue = Operateurs[index];

	......
	
Voilà la solution que j'ai trouvé et qui fonctionne.
Le seul soucis que j'ai c'est que j'aurai préféré un string vide, au lieu de "?" et "/" au lieu de ":", mais Popup n'affiche pas un string vide et n'affiche pas non plus le trait de fraction. Va savoir pourquoi?
Quelqu'un aura peut-être une idée, Qui sait...
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: Enum Operateur

Message par jmhoubre » 13 Mai 2021 12:25

Tu peux remplacer le ? par Alt-255, qui est un caractère vide.
Pour le ":", je n'ai pas pu tester ton code, qui génère de nombreuses erreurs.

Répondre

Revenir vers « Scripting »