# OnPreviewGUI(Rect, GUIStyle)

> Creates a custom preview for the preview area of the Inspector, the headers of the primary Editor, and the object selector. You must implement Editor.HasPreviewGUI() for this method to be called.

## Definition

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

```csharp
public virtual void OnPreviewGUI(Rect r, GUIStyle background)
```

### Parameters

**** (\[Rect]\(/engine/6000.6/script-reference/unityengine/rect)): The rectangle in which to draw the preview.**** (\[GUIStyle]\(/engine/6000.6/script-reference/unityengine/guistyle)): Background image.

### Remarks

If you implement [Editor.OnInteractivePreviewGUI](/engine/6000.6/script-reference/unityeditor/editor/oninteractivepreviewgui.md), then this method is only called for non-interactive custom previews. The overidden method should render a preview of the asset in the specified rectangle (r). The default implementation is a no-op.

**Note:** Inspector previews are limited to the primary Editor of persistent objects, such as GameObjectInspector, MaterialEditor, and TextureInspector. A component cannot have its own Inspector preview.

```csharp
using UnityEngine;
using UnityEditor;

[CreateAssetMenu]
class MyObject : ScriptableObject
{
    public string text;
}

// Show a preview of the text saved in MyObject.
[CustomEditor(typeof(MyObject))]
public class MyObjectEditor : Editor
{
    public override bool HasPreviewGUI() => true;

    public override void OnPreviewGUI(Rect r, GUIStyle background)
    {
        GUI.Label(r, (target as MyObject).text);
    }
}
```

Additional Resources: [Editor.OnInteractivePreviewGUI](/engine/6000.6/script-reference/unityeditor/editor/oninteractivepreviewgui.md).
