# EnumPopup

> Makes an enum popup selection field.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor](/engine/6000.5/script-reference/unityeditor.md)
* **Assembly:** UnityEditor.CoreModule

## EnumPopup(Rect, Enum, GUIStyle)

Makes an enum popup selection field.

```csharp
public static Enum EnumPopup(Rect position, Enum selected, GUIStyle style)
```

### Parameters

**** (\[Rect]\(/engine/6000.5/script-reference/unityengine/rect)): Rectangle on the screen to use for the field.**** (\[Enum]\(https\://learn.microsoft.com/dotnet/api/system.enum)): The enum option the field shows.**** (\[GUIStyle]\(/engine/6000.5/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.5/script-reference/unityengine/guistyle.md).

### Returns

| Type                                                       | Description                                         |
| ---------------------------------------------------------- | --------------------------------------------------- |
| [Enum](https://learn.microsoft.com/dotnet/api/system.enum) | The enum option that has been selected by the user. |

### Remarks

Takes the currently selected enum value as a parameter and returns the enum value selected by the user. ![EditorGUIEnumPopup (EnumPopup)](/api/media?file=/engine/6000.5/media/images/EditorGUIEnumPopup.png)

*Enum Popup in an Editor Window.*

### Examples

```csharp
using UnityEditor;
using UnityEngine;


// Shows info of a GameObject depending on the selected option

public enum OPTIONS
{
    Position = 0,
    Rotation = 1,
    Scale = 2,
}


public class EditorGUIEnumPopup : EditorWindow
{
    OPTIONS display = OPTIONS.Position;

    [MenuItem("Examples/Editor GUI Enum Popup usage")]
    static void Init()
    {
        EditorWindow window = GetWindow(typeof(EditorGUIEnumPopup));
        window.position = new Rect(0, 0, 220, 80);
        window.Show();
    }

    void OnGUI()
    {
        Transform selectedObj = Selection.activeTransform;

        display = (OPTIONS)EditorGUI.EnumPopup(
            new Rect(3, 3, position.width - 6, 15),
            "Show:",
            display);

        EditorGUI.LabelField(new Rect(0, 20, position.width, 15),
            "Name:",
            selectedObj ? selectedObj.name : "Select an Object");
        if (selectedObj)
        {
            switch (display)
            {
                case OPTIONS.Position:
                    EditorGUI.LabelField(new Rect(0, 40, position.width, 15),
                        "Position:",
                        selectedObj.position.ToString());
                    break;

                case OPTIONS.Rotation:
                    EditorGUI.LabelField(new Rect(0, 40, position.width, 15),
                        "Rotation:",
                        selectedObj.rotation.ToString());
                    break;

                case OPTIONS.Scale:
                    EditorGUI.LabelField(new Rect(0, 40, position.width, 15),
                        "Scale:",
                        selectedObj.localScale.ToString());
                    break;

                default:
                    Debug.LogError("Unrecognized Option");
                    break;
            }
        }

        if (GUI.Button(new Rect(3, position.height - 25, position.width - 6, 24), "Close"))
            this.Close();
    }
}
```

## EnumPopup(Rect, string, Enum, GUIStyle)

Makes an enum popup selection field.

```csharp
public static Enum EnumPopup(Rect position, string label, Enum selected, GUIStyle style)
```

### Parameters

**** (\[Rect]\(/engine/6000.5/script-reference/unityengine/rect)): Rectangle on the screen to use for the field.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Optional label in front of the field.**** (\[Enum]\(https\://learn.microsoft.com/dotnet/api/system.enum)): The enum option the field shows.**** (\[GUIStyle]\(/engine/6000.5/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.5/script-reference/unityengine/guistyle.md).

### Returns

| Type                                                       | Description                                         |
| ---------------------------------------------------------- | --------------------------------------------------- |
| [Enum](https://learn.microsoft.com/dotnet/api/system.enum) | The enum option that has been selected by the user. |

### Remarks

Takes the currently selected enum value as a parameter and returns the enum value selected by the user. ![EditorGUIEnumPopup (EnumPopup)](/api/media?file=/engine/6000.5/media/images/EditorGUIEnumPopup.png)

*Enum Popup in an Editor Window.*

### Examples

```csharp
using UnityEditor;
using UnityEngine;


// Shows info of a GameObject depending on the selected option

public enum OPTIONS
{
    Position = 0,
    Rotation = 1,
    Scale = 2,
}


public class EditorGUIEnumPopup : EditorWindow
{
    OPTIONS display = OPTIONS.Position;

    [MenuItem("Examples/Editor GUI Enum Popup usage")]
    static void Init()
    {
        EditorWindow window = GetWindow(typeof(EditorGUIEnumPopup));
        window.position = new Rect(0, 0, 220, 80);
        window.Show();
    }

    void OnGUI()
    {
        Transform selectedObj = Selection.activeTransform;

        display = (OPTIONS)EditorGUI.EnumPopup(
            new Rect(3, 3, position.width - 6, 15),
            "Show:",
            display);

        EditorGUI.LabelField(new Rect(0, 20, position.width, 15),
            "Name:",
            selectedObj ? selectedObj.name : "Select an Object");
        if (selectedObj)
        {
            switch (display)
            {
                case OPTIONS.Position:
                    EditorGUI.LabelField(new Rect(0, 40, position.width, 15),
                        "Position:",
                        selectedObj.position.ToString());
                    break;

                case OPTIONS.Rotation:
                    EditorGUI.LabelField(new Rect(0, 40, position.width, 15),
                        "Rotation:",
                        selectedObj.rotation.ToString());
                    break;

                case OPTIONS.Scale:
                    EditorGUI.LabelField(new Rect(0, 40, position.width, 15),
                        "Scale:",
                        selectedObj.localScale.ToString());
                    break;

                default:
                    Debug.LogError("Unrecognized Option");
                    break;
            }
        }

        if (GUI.Button(new Rect(3, position.height - 25, position.width - 6, 24), "Close"))
            this.Close();
    }
}
```

## EnumPopup(Rect, GUIContent, Enum, GUIStyle)

Makes an enum popup selection field.

```csharp
public static Enum EnumPopup(Rect position, GUIContent label, Enum selected, GUIStyle style)
```

### Parameters

**** (\[Rect]\(/engine/6000.5/script-reference/unityengine/rect)): Rectangle on the screen to use for the field.**** (\[GUIContent]\(/engine/6000.5/script-reference/unityengine/guicontent)): Optional label in front of the field.**** (\[Enum]\(https\://learn.microsoft.com/dotnet/api/system.enum)): The enum option the field shows.**** (\[GUIStyle]\(/engine/6000.5/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.5/script-reference/unityengine/guistyle.md).

### Returns

| Type                                                       | Description                                         |
| ---------------------------------------------------------- | --------------------------------------------------- |
| [Enum](https://learn.microsoft.com/dotnet/api/system.enum) | The enum option that has been selected by the user. |

### Remarks

Takes the currently selected enum value as a parameter and returns the enum value selected by the user. ![EditorGUIEnumPopup (EnumPopup)](/api/media?file=/engine/6000.5/media/images/EditorGUIEnumPopup.png)

*Enum Popup in an Editor Window.*

### Examples

```csharp
using UnityEditor;
using UnityEngine;


// Shows info of a GameObject depending on the selected option

public enum OPTIONS
{
    Position = 0,
    Rotation = 1,
    Scale = 2,
}


public class EditorGUIEnumPopup : EditorWindow
{
    OPTIONS display = OPTIONS.Position;

    [MenuItem("Examples/Editor GUI Enum Popup usage")]
    static void Init()
    {
        EditorWindow window = GetWindow(typeof(EditorGUIEnumPopup));
        window.position = new Rect(0, 0, 220, 80);
        window.Show();
    }

    void OnGUI()
    {
        Transform selectedObj = Selection.activeTransform;

        display = (OPTIONS)EditorGUI.EnumPopup(
            new Rect(3, 3, position.width - 6, 15),
            "Show:",
            display);

        EditorGUI.LabelField(new Rect(0, 20, position.width, 15),
            "Name:",
            selectedObj ? selectedObj.name : "Select an Object");
        if (selectedObj)
        {
            switch (display)
            {
                case OPTIONS.Position:
                    EditorGUI.LabelField(new Rect(0, 40, position.width, 15),
                        "Position:",
                        selectedObj.position.ToString());
                    break;

                case OPTIONS.Rotation:
                    EditorGUI.LabelField(new Rect(0, 40, position.width, 15),
                        "Rotation:",
                        selectedObj.rotation.ToString());
                    break;

                case OPTIONS.Scale:
                    EditorGUI.LabelField(new Rect(0, 40, position.width, 15),
                        "Scale:",
                        selectedObj.localScale.ToString());
                    break;

                default:
                    Debug.LogError("Unrecognized Option");
                    break;
            }
        }

        if (GUI.Button(new Rect(3, position.height - 25, position.width - 6, 24), "Close"))
            this.Close();
    }
}
```

## EnumPopup(Rect, GUIContent, Enum, Func\<Enum, bool>, bool, GUIStyle)

Makes an enum popup selection field.

```csharp
public static Enum EnumPopup(Rect position, GUIContent label, Enum selected, Func<Enum, bool> checkEnabled, bool includeObsolete = false, GUIStyle style = null)
```

### Parameters

**** (\[Rect]\(/engine/6000.5/script-reference/unityengine/rect)): Rectangle on the screen to use for the field.**** (\[GUIContent]\(/engine/6000.5/script-reference/unityengine/guicontent)): Optional label in front of the field.**** (\[Enum]\(https\://learn.microsoft.com/dotnet/api/system.enum)): The enum option the field shows.**** (\[Func\<Enum, bool>]\(https\://learn.microsoft.com/dotnet/api/system.func-1)): Method called for each Enum value displayed. The specified method should return true if the option can be selected, false otherwise.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Set to true to include Enum values with ObsoleteAttribute. Set to false to exclude Enum values with ObsoleteAttribute.**** (\[GUIStyle]\(/engine/6000.5/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.5/script-reference/unityengine/guistyle.md).

### Returns

| Type                                                       | Description                                         |
| ---------------------------------------------------------- | --------------------------------------------------- |
| [Enum](https://learn.microsoft.com/dotnet/api/system.enum) | The enum option that has been selected by the user. |

### Remarks

Takes the currently selected enum value as a parameter and returns the enum value selected by the user. ![EditorGUIEnumPopup (EnumPopup)](/api/media?file=/engine/6000.5/media/images/EditorGUIEnumPopup.png)

*Enum Popup in an Editor Window.*

### Examples

```csharp
using UnityEditor;
using UnityEngine;


// Shows info of a GameObject depending on the selected option

public enum OPTIONS
{
    Position = 0,
    Rotation = 1,
    Scale = 2,
}


public class EditorGUIEnumPopup : EditorWindow
{
    OPTIONS display = OPTIONS.Position;

    [MenuItem("Examples/Editor GUI Enum Popup usage")]
    static void Init()
    {
        EditorWindow window = GetWindow(typeof(EditorGUIEnumPopup));
        window.position = new Rect(0, 0, 220, 80);
        window.Show();
    }

    void OnGUI()
    {
        Transform selectedObj = Selection.activeTransform;

        display = (OPTIONS)EditorGUI.EnumPopup(
            new Rect(3, 3, position.width - 6, 15),
            "Show:",
            display);

        EditorGUI.LabelField(new Rect(0, 20, position.width, 15),
            "Name:",
            selectedObj ? selectedObj.name : "Select an Object");
        if (selectedObj)
        {
            switch (display)
            {
                case OPTIONS.Position:
                    EditorGUI.LabelField(new Rect(0, 40, position.width, 15),
                        "Position:",
                        selectedObj.position.ToString());
                    break;

                case OPTIONS.Rotation:
                    EditorGUI.LabelField(new Rect(0, 40, position.width, 15),
                        "Rotation:",
                        selectedObj.rotation.ToString());
                    break;

                case OPTIONS.Scale:
                    EditorGUI.LabelField(new Rect(0, 40, position.width, 15),
                        "Scale:",
                        selectedObj.localScale.ToString());
                    break;

                default:
                    Debug.LogError("Unrecognized Option");
                    break;
            }
        }

        if (GUI.Button(new Rect(3, position.height - 25, position.width - 6, 24), "Close"))
            this.Close();
    }
}
```
