# InspectorTitlebar

> Makes an inspector-window-like titlebar.

## Definition

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

## InspectorTitlebar(Rect, Object\[])

Makes an inspector-window-like titlebar.

```csharp
public static void InspectorTitlebar(Rect position, Object[] targetObjs)
```

### Parameters

**** (\[Rect]\(/engine/6000.0/script-reference/unityengine/rect)): Rectangle on the screen to use for the titlebar.**** (\[Object\[]]\(/engine/6000.0/script-reference/unityengine/object)): The objects that the titlebar is for.

## InspectorTitlebar(Rect, bool, Object, bool)

Makes an inspector-window-like titlebar.

```csharp
public static bool InspectorTitlebar(Rect position, bool foldout, Object targetObj, bool expandable)
```

### Parameters

**** (\[Rect]\(/engine/6000.0/script-reference/unityengine/rect)): Rectangle on the screen to use for the titlebar.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): The foldout state shown with the arrow.**** (\[Object]\(/engine/6000.0/script-reference/unityengine/object)): The object (for example a component) that the titlebar is for.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Whether this editor should display a foldout arrow in order to toggle the display of its properties.

### Returns

| Type                                                          | Description                             |
| ------------------------------------------------------------- | --------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | The foldout state selected by the user. |

### Remarks

The titlebar has a foldout arrow, a help icon, and a settings menu that depends on the type of the object supplied.

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

*Inspector titlebar in an Editor Window.*

### Examples

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

// Editor window that shows the detailed rotation (X,Y,Z and W components),
// the position in 3D space and position in Screen space of the selected
// transform.

class CustomTransformInspector : EditorWindow
{
    bool showing = true;
    Vector4 rotationComp;

    [MenuItem("Examples/GameObject detailed inspector")]
    static void Init()
    {
        CustomTransformInspector window = (CustomTransformInspector)EditorWindow.GetWindow(typeof(CustomTransformInspector));
        window.Show();
    }

    void OnInspectorUpdate()
    {
        Repaint();
    }

    void OnGUI()
    {
        var currObj = Selection.activeTransform;

        showing = EditorGUI.InspectorTitlebar(new Rect(0, 0, position.width, 20), showing, currObj, showing);
        if (showing)
        {
            if (currObj)
            {
                currObj.position = EditorGUI.Vector3Field(new Rect(3, 15, position.width - 6, 20),
                    "Position in 3D Space:",
                    currObj.position);

                EditorGUI.Vector2Field(new Rect(3, 50, position.width - 6, 20),
                    "Position in Screen Space:",
                    Camera.main.WorldToScreenPoint(currObj.position));

                rotationComp = EditorGUI.Vector4Field(new Rect(3, 85, position.width - 6, 20),
                    "Detailed Rotation:",
                    QuaternionToVector4(currObj.localRotation));
                currObj.localRotation = ConvertToQuaternion(rotationComp);

                currObj.localScale = EditorGUI.Vector3Field(new Rect(3, 120, position.width - 6, 20),
                    "Scale:",
                    currObj.localScale);
            }
            else
            {
                EditorGUI.DropShadowLabel(
                    new Rect(3, 15, position.width, 20),
                    "Select an Object to inspect");
            }
        }
    }

    Quaternion ConvertToQuaternion(Vector4 v4)
    {
        return new Quaternion(v4.x, v4.y, v4.z, v4.w);
    }

    Vector4 QuaternionToVector4(Quaternion q)
    {
        return new Vector4(q.x, q.y, q.z, q.w);
    }
}
```

## InspectorTitlebar(Rect, bool, Object\[], bool)

Makes an inspector-window-like titlebar.

```csharp
public static bool InspectorTitlebar(Rect position, bool foldout, Object[] targetObjs, bool expandable)
```

### Parameters

**** (\[Rect]\(/engine/6000.0/script-reference/unityengine/rect)): Rectangle on the screen to use for the titlebar.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): The foldout state shown with the arrow.**** (\[Object\[]]\(/engine/6000.0/script-reference/unityengine/object)): The objects that the titlebar is for.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Whether this editor should display a foldout arrow in order to toggle the display of its properties.

### Returns

| Type                                                          | Description                             |
| ------------------------------------------------------------- | --------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | The foldout state selected by the user. |

### Remarks

The titlebar has a foldout arrow, a help icon, and a settings menu that depends on the type of the object supplied.

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

*Inspector titlebar in an Editor Window.*

### Examples

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

// Editor window that shows the detailed rotation (X,Y,Z and W components),
// the position in 3D space and position in Screen space of the selected
// transform.

class CustomTransformInspector : EditorWindow
{
    bool showing = true;
    Vector4 rotationComp;

    [MenuItem("Examples/GameObject detailed inspector")]
    static void Init()
    {
        CustomTransformInspector window = (CustomTransformInspector)EditorWindow.GetWindow(typeof(CustomTransformInspector));
        window.Show();
    }

    void OnInspectorUpdate()
    {
        Repaint();
    }

    void OnGUI()
    {
        var currObj = Selection.activeTransform;

        showing = EditorGUI.InspectorTitlebar(new Rect(0, 0, position.width, 20), showing, currObj, showing);
        if (showing)
        {
            if (currObj)
            {
                currObj.position = EditorGUI.Vector3Field(new Rect(3, 15, position.width - 6, 20),
                    "Position in 3D Space:",
                    currObj.position);

                EditorGUI.Vector2Field(new Rect(3, 50, position.width - 6, 20),
                    "Position in Screen Space:",
                    Camera.main.WorldToScreenPoint(currObj.position));

                rotationComp = EditorGUI.Vector4Field(new Rect(3, 85, position.width - 6, 20),
                    "Detailed Rotation:",
                    QuaternionToVector4(currObj.localRotation));
                currObj.localRotation = ConvertToQuaternion(rotationComp);

                currObj.localScale = EditorGUI.Vector3Field(new Rect(3, 120, position.width - 6, 20),
                    "Scale:",
                    currObj.localScale);
            }
            else
            {
                EditorGUI.DropShadowLabel(
                    new Rect(3, 15, position.width, 20),
                    "Select an Object to inspect");
            }
        }
    }

    Quaternion ConvertToQuaternion(Vector4 v4)
    {
        return new Quaternion(v4.x, v4.y, v4.z, v4.w);
    }

    Vector4 QuaternionToVector4(Quaternion q)
    {
        return new Vector4(q.x, q.y, q.z, q.w);
    }
}
```
