# Foldout

> Makes a label with a foldout arrow to the left of it.

## Definition

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

## Foldout(Rect, bool, string, GUIStyle)

Makes a label with a foldout arrow to the left of it.

```csharp
public static bool Foldout(Rect position, bool foldout, string content, GUIStyle style)
```

### Parameters

**** (\[Rect]\(/engine/6000.0/script-reference/unityengine/rect)): Rectangle on the screen to use for the arrow and label.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): The shown foldout state.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The label to show.**** (\[GUIStyle]\(/engine/6000.0/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.0/script-reference/unityengine/guistyle.md).

### Returns

| Type                                                          | Description                                                                     |
| ------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | The foldout state selected by the user. If true, you should render sub-objects. |

### Remarks

This is useful for creating tree or folder like structures where child objects are only shown if the parent is folded out.

![FoldoutUsageScreenshot (Foldout)](/api/media?file=/engine/6000.0/media/images/FoldoutUsageScreenshot.png)

*Foldout in an Editor Window.*

### Examples

```csharp
using UnityEditor;
using UnityEngine;
using System.Collections;

// Create a foldable menu that hides/shows the selected transform position.
// if no Transform is selected, the Foldout item will be folded until a transform is selected.
public class EditorGUIFoldout : EditorWindow
{
    public bool showPosition = true;
    public string status = "Select a GameObject";
    [MenuItem("Examples/Foldout Usage")]
    static void Init()
    {
        UnityEditor.EditorWindow window = GetWindow(typeof(EditorGUIFoldout));
        window.position = new Rect(0, 0, 150, 60);
        window.Show();
    }

    void OnGUI()
    {
        showPosition = EditorGUI.Foldout(new Rect(3, 3, position.width - 6, 15), showPosition, status);
        if (showPosition)
            if (Selection.activeTransform)
            {
                Selection.activeTransform.position = EditorGUI.Vector3Field(new Rect(3, 25, position.width - 6, 40), "Position", Selection.activeTransform.position);
                status = Selection.activeTransform.name;
            }

        if (!Selection.activeTransform)
        {
            status = "Select a GameObject";
            showPosition = false;
        }
    }

    void OnInspectorUpdate()
    {
        Repaint();
    }
}
```

## Foldout(Rect, bool, string, bool, GUIStyle)

Makes a label with a foldout arrow to the left of it.

```csharp
public static bool Foldout(Rect position, bool foldout, string content, bool toggleOnLabelClick, GUIStyle style)
```

### Parameters

**** (\[Rect]\(/engine/6000.0/script-reference/unityengine/rect)): Rectangle on the screen to use for the arrow and label.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): The shown foldout state.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The label to show.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Should the label be a clickable part of the control?**** (\[GUIStyle]\(/engine/6000.0/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.0/script-reference/unityengine/guistyle.md).

### Returns

| Type                                                          | Description                                                                     |
| ------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | The foldout state selected by the user. If true, you should render sub-objects. |

### Remarks

This is useful for creating tree or folder like structures where child objects are only shown if the parent is folded out.

![FoldoutUsageScreenshot (Foldout)](/api/media?file=/engine/6000.0/media/images/FoldoutUsageScreenshot.png)

*Foldout in an Editor Window.*

### Examples

```csharp
using UnityEditor;
using UnityEngine;
using System.Collections;

// Create a foldable menu that hides/shows the selected transform position.
// if no Transform is selected, the Foldout item will be folded until a transform is selected.
public class EditorGUIFoldout : EditorWindow
{
    public bool showPosition = true;
    public string status = "Select a GameObject";
    [MenuItem("Examples/Foldout Usage")]
    static void Init()
    {
        UnityEditor.EditorWindow window = GetWindow(typeof(EditorGUIFoldout));
        window.position = new Rect(0, 0, 150, 60);
        window.Show();
    }

    void OnGUI()
    {
        showPosition = EditorGUI.Foldout(new Rect(3, 3, position.width - 6, 15), showPosition, status);
        if (showPosition)
            if (Selection.activeTransform)
            {
                Selection.activeTransform.position = EditorGUI.Vector3Field(new Rect(3, 25, position.width - 6, 40), "Position", Selection.activeTransform.position);
                status = Selection.activeTransform.name;
            }

        if (!Selection.activeTransform)
        {
            status = "Select a GameObject";
            showPosition = false;
        }
    }

    void OnInspectorUpdate()
    {
        Repaint();
    }
}
```

## Foldout(Rect, bool, GUIContent, GUIStyle)

Makes a label with a foldout arrow to the left of it.

```csharp
public static bool Foldout(Rect position, bool foldout, GUIContent content, GUIStyle style)
```

### Parameters

**** (\[Rect]\(/engine/6000.0/script-reference/unityengine/rect)): Rectangle on the screen to use for the arrow and label.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): The shown foldout state.**** (\[GUIContent]\(/engine/6000.0/script-reference/unityengine/guicontent)): The label to show.**** (\[GUIStyle]\(/engine/6000.0/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.0/script-reference/unityengine/guistyle.md).

### Returns

| Type                                                          | Description                                                                     |
| ------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | The foldout state selected by the user. If true, you should render sub-objects. |

### Remarks

This is useful for creating tree or folder like structures where child objects are only shown if the parent is folded out.

![FoldoutUsageScreenshot (Foldout)](/api/media?file=/engine/6000.0/media/images/FoldoutUsageScreenshot.png)

*Foldout in an Editor Window.*

### Examples

```csharp
using UnityEditor;
using UnityEngine;
using System.Collections;

// Create a foldable menu that hides/shows the selected transform position.
// if no Transform is selected, the Foldout item will be folded until a transform is selected.
public class EditorGUIFoldout : EditorWindow
{
    public bool showPosition = true;
    public string status = "Select a GameObject";
    [MenuItem("Examples/Foldout Usage")]
    static void Init()
    {
        UnityEditor.EditorWindow window = GetWindow(typeof(EditorGUIFoldout));
        window.position = new Rect(0, 0, 150, 60);
        window.Show();
    }

    void OnGUI()
    {
        showPosition = EditorGUI.Foldout(new Rect(3, 3, position.width - 6, 15), showPosition, status);
        if (showPosition)
            if (Selection.activeTransform)
            {
                Selection.activeTransform.position = EditorGUI.Vector3Field(new Rect(3, 25, position.width - 6, 40), "Position", Selection.activeTransform.position);
                status = Selection.activeTransform.name;
            }

        if (!Selection.activeTransform)
        {
            status = "Select a GameObject";
            showPosition = false;
        }
    }

    void OnInspectorUpdate()
    {
        Repaint();
    }
}
```

## Foldout(Rect, bool, GUIContent, bool, GUIStyle)

Makes a label with a foldout arrow to the left of it.

```csharp
public static bool Foldout(Rect position, bool foldout, GUIContent content, bool toggleOnLabelClick, GUIStyle style)
```

### Parameters

**** (\[Rect]\(/engine/6000.0/script-reference/unityengine/rect)): Rectangle on the screen to use for the arrow and label.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): The shown foldout state.**** (\[GUIContent]\(/engine/6000.0/script-reference/unityengine/guicontent)): The label to show.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Should the label be a clickable part of the control?**** (\[GUIStyle]\(/engine/6000.0/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.0/script-reference/unityengine/guistyle.md).

### Returns

| Type                                                          | Description                                                                     |
| ------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | The foldout state selected by the user. If true, you should render sub-objects. |

### Remarks

This is useful for creating tree or folder like structures where child objects are only shown if the parent is folded out.

![FoldoutUsageScreenshot (Foldout)](/api/media?file=/engine/6000.0/media/images/FoldoutUsageScreenshot.png)

*Foldout in an Editor Window.*

### Examples

```csharp
using UnityEditor;
using UnityEngine;
using System.Collections;

// Create a foldable menu that hides/shows the selected transform position.
// if no Transform is selected, the Foldout item will be folded until a transform is selected.
public class EditorGUIFoldout : EditorWindow
{
    public bool showPosition = true;
    public string status = "Select a GameObject";
    [MenuItem("Examples/Foldout Usage")]
    static void Init()
    {
        UnityEditor.EditorWindow window = GetWindow(typeof(EditorGUIFoldout));
        window.position = new Rect(0, 0, 150, 60);
        window.Show();
    }

    void OnGUI()
    {
        showPosition = EditorGUI.Foldout(new Rect(3, 3, position.width - 6, 15), showPosition, status);
        if (showPosition)
            if (Selection.activeTransform)
            {
                Selection.activeTransform.position = EditorGUI.Vector3Field(new Rect(3, 25, position.width - 6, 40), "Position", Selection.activeTransform.position);
                status = Selection.activeTransform.name;
            }

        if (!Selection.activeTransform)
        {
            status = "Select a GameObject";
            showPosition = false;
        }
    }

    void OnInspectorUpdate()
    {
        Repaint();
    }
}
```
