# Foldout

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

## Definition

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

## Foldout(bool, string, GUIStyle)

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

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

### Parameters

**** (\[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.6/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.6/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.6/media/images/FoldoutUsageScreenshot.png)

*Foldout in an Editor Window.*

### Examples

```csharp
// 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.

using UnityEditor;
using UnityEngine;

public class FoldoutUsage : EditorWindow
{
    bool showPosition = true;
    string status = "Select a GameObject";

    [MenuItem("Examples/Foldout Usage")]
    static void Init()
    {
        FoldoutUsage window = (FoldoutUsage)GetWindow(typeof(FoldoutUsage));
        window.Show();
    }

    public void OnGUI()
    {
        showPosition = EditorGUILayout.Foldout(showPosition, status);
        if (showPosition)
            if (Selection.activeTransform)
            {
                Selection.activeTransform.position =
                    EditorGUILayout.Vector3Field("Position", Selection.activeTransform.position);
                status = Selection.activeTransform.name;
            }

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

    public void OnInspectorUpdate()
    {
        this.Repaint();
    }
}
```

## Foldout(bool, GUIContent, GUIStyle)

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

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

### Parameters

**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): The shown foldout state.**** (\[GUIContent]\(/engine/6000.6/script-reference/unityengine/guicontent)): The label to show.**** (\[GUIStyle]\(/engine/6000.6/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.6/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.6/media/images/FoldoutUsageScreenshot.png)

*Foldout in an Editor Window.*

### Examples

```csharp
// 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.

using UnityEditor;
using UnityEngine;

public class FoldoutUsage : EditorWindow
{
    bool showPosition = true;
    string status = "Select a GameObject";

    [MenuItem("Examples/Foldout Usage")]
    static void Init()
    {
        FoldoutUsage window = (FoldoutUsage)GetWindow(typeof(FoldoutUsage));
        window.Show();
    }

    public void OnGUI()
    {
        showPosition = EditorGUILayout.Foldout(showPosition, status);
        if (showPosition)
            if (Selection.activeTransform)
            {
                Selection.activeTransform.position =
                    EditorGUILayout.Vector3Field("Position", Selection.activeTransform.position);
                status = Selection.activeTransform.name;
            }

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

    public void OnInspectorUpdate()
    {
        this.Repaint();
    }
}
```

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

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

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

### Parameters

**** (\[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)): Specifies whether clicking the label toggles the foldout state. The default value is false. Set to true to include the label in the clickable area.**** (\[GUIStyle]\(/engine/6000.6/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.6/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.6/media/images/FoldoutUsageScreenshot.png)

*Foldout in an Editor Window.*

### Examples

```csharp
// 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.

using UnityEditor;
using UnityEngine;

public class FoldoutUsage : EditorWindow
{
    bool showPosition = true;
    string status = "Select a GameObject";

    [MenuItem("Examples/Foldout Usage")]
    static void Init()
    {
        FoldoutUsage window = (FoldoutUsage)GetWindow(typeof(FoldoutUsage));
        window.Show();
    }

    public void OnGUI()
    {
        showPosition = EditorGUILayout.Foldout(showPosition, status);
        if (showPosition)
            if (Selection.activeTransform)
            {
                Selection.activeTransform.position =
                    EditorGUILayout.Vector3Field("Position", Selection.activeTransform.position);
                status = Selection.activeTransform.name;
            }

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

    public void OnInspectorUpdate()
    {
        this.Repaint();
    }
}
```

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

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

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

### Parameters

**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): The shown foldout state.**** (\[GUIContent]\(/engine/6000.6/script-reference/unityengine/guicontent)): The label to show.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Specifies whether clicking the label toggles the foldout state. The default value is false. Set to true to include the label in the clickable area.**** (\[GUIStyle]\(/engine/6000.6/script-reference/unityengine/guistyle)): Optional [GUIStyle](/engine/6000.6/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.6/media/images/FoldoutUsageScreenshot.png)

*Foldout in an Editor Window.*

### Examples

```csharp
// 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.

using UnityEditor;
using UnityEngine;

public class FoldoutUsage : EditorWindow
{
    bool showPosition = true;
    string status = "Select a GameObject";

    [MenuItem("Examples/Foldout Usage")]
    static void Init()
    {
        FoldoutUsage window = (FoldoutUsage)GetWindow(typeof(FoldoutUsage));
        window.Show();
    }

    public void OnGUI()
    {
        showPosition = EditorGUILayout.Foldout(showPosition, status);
        if (showPosition)
            if (Selection.activeTransform)
            {
                Selection.activeTransform.position =
                    EditorGUILayout.Vector3Field("Position", Selection.activeTransform.position);
                status = Selection.activeTransform.name;
            }

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

    public void OnInspectorUpdate()
    {
        this.Repaint();
    }
}
```
