How to create a drop down menu in editor inspector

Hey everyone,

Now I know there have been quite a few questions like this, but just hear me out!!!

Want I want to do, is just have a drop down menu that the user can click on, and then select a value in the inspector where the rest of the variables are… I don’t want it in any extra GUI Window or anything, just next to the rest of the variables for a script in the editor!!! Here is a link to an image on my website that I snapshotted from unity that basically shows what I’m looking for!!!

Where you see “Dropdown” in my lovely computer hand writing, that is the variable name like the rest of them. When the user clicks on “Var value” I want it to show a dropdown box in which they can then pick from a list of values to assign to the variable. And the other little scribble next to that is where there would be a little arrow most likely to show that it’s a drop down menu!!!

It’s sort of like a Editor GUI Popup, except I want it in the inspector window next to the rest of the variables!

Any suggestions are welcome!!!

Thanks!

-Grady

This would be the c# version of the code

public enum Orientation{
Left,
Right,
Top,
Bottom
}

public Orientation orientation;

[37787-screen+shot+2014-12-29+at+11.28.40+pm.png|37787]

1 Like

Hi Grady.

I think what you want is a custom enumeration and a public variable of the type of this enumeration. Unity should display it as a drop down menu, with the elements of the enum as list items. Try:

enum myEnum // your custom enumeration
{
   Item1, 
   Item2, 
   Item3
};

var dropDown = myEnum.Item1;  // this public var should appear as a drop down

cheers,
Vivien

You can try the asset dropdown attribute, it is simple and allows dynamic list or array to be selected but not only enum.

Example:

public class Player : Monobehaviour{
    public List<string> NameList; 
    
    [Dropdown("NameList")]//input the path of the list
    public string MyName;
}

Enums are declared the same way you declare a class or a struct.

Here is a more complete answer for those who came here looking for an answer and not part of one.

    using UnityEngine;
    public class UpgradeModule : MonoBehaviour
    {
        public MyEnum myDropDown = new MyEnum();
    }
    
    public enum MyEnum
    {
        Item1, 
        Item2, 
        Item3
    };

Actually If you planning not to expose the enum varialbles , we can do with Serializefields

enum Directions
{up,down,left,right}

#pragma warning disable 0649

[Serializefield] Directions direction;

#pragma warning disable 0649

this will expose the enums ,
I added serializefield to avoid warnings