# ObjectField

> Make a field to receive any object type.

## Definition

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

## ObjectField(Object, Type, GUILayoutOption\[])

Make a field to receive any object type.

> **Warning:**
>
> **Deprecated.** Check the docs for the usage of the new parameter 'allowSceneObjects'.

```csharp
public static Object ObjectField(Object obj, Type objType, params GUILayoutOption[] options)
```

### Parameters

**** (\[Object]\(/engine/6000.7/script-reference/unityengine/object)): The object the field shows.**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of the objects that can be assigned.**** (\[GUILayoutOption\[]]\(/engine/6000.7/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`. Additional Resources: [GUILayout.Width](/engine/6000.7/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.7/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.7/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.7/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.7/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.7/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.7/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.7/script-reference/unityengine/guilayout/expandheight.md).

### Returns

| Type                                                            | Description                               |
| --------------------------------------------------------------- | ----------------------------------------- |
| [Object](/engine/6000.7/script-reference/unityengine/object.md) | The object that has been set by the user. |

### Remarks

You can assign objects either by drag and drop or by selecting an object using the Object Picker.

Ensure that the **allowSceneObjects** parameter is false if the object reference is stored as part of an asset, since assets can't store references to objects in a Scene.

If the ObjectField is part of a custom Editor for a script component, use EditorUtility.IsPersistent() to check if the component is on an asset or a Scene object.

See the example in the [Editor](/engine/6000.7/script-reference/unityeditor/editor.md) class for further information.

![QuickHelperObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/QuickHelperObjectField.png)

*Search for a help page by selecting the GameObject in the Object Field.*

```csharp
// EditorScript that quickly searches for a help page
// about the selected Object.
//
// If no such page is found in the Manual it opens the Unity forum.

using UnityEditor;
using UnityEngine;
using System.Collections;

public class ExampleClass : EditorWindow
{
    public Object source;

    [MenuItem("Example/ObjectField Example _h")]
    static void Init()
    {
        var window = GetWindowWithRect<ExampleClass>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        EditorGUILayout.BeginHorizontal();
        source = EditorGUILayout.ObjectField(source, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        if (GUILayout.Button("Search!"))
        {
            if (source == null)
                ShowNotification(new GUIContent("No object selected for searching"));
            else if (Help.HasHelpForObject(source))
                Help.ShowHelpForObject(source);
            else
                Help.BrowseURL("https://forum.unity3d.com/search.php");
        }
    }
}
```

You can also use the `options` parameter to change the look of the control. The following example changes the look of a Sprite ObjectField that is displayed with a large field format.

![SpriteObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/SpriteObjectField.png)

*Two different layout options for a sprite field.*

```csharp
using UnityEditor;
using UnityEngine;

public class SpriteExample : EditorWindow
{
    public Sprite sprite;

    [MenuItem("Example/ObjectField Sprite Example")]
    static void Init()
    {
        var window = GetWindowWithRect<SpriteExample>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        sprite = EditorGUILayout.ObjectField(sprite, typeof(Sprite), false, GUILayout.Height(EditorGUIUtility.singleLineHeight)) as Sprite;
    }
}
```

## ObjectField(Object, Type, Object, GUILayoutOption\[])

Make a field to receive any object type.

```csharp
public static Object ObjectField(Object obj, Type objType, Object targetBeingEdited, params GUILayoutOption[] options)
```

### Parameters

**** (\[Object]\(/engine/6000.7/script-reference/unityengine/object)): The object the field shows.**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of the objects that can be assigned.**** (\[Object]\(/engine/6000.7/script-reference/unityengine/object)): Optional object used to filter selection criteria. If the target object is persistent, scene objects are available for selection. If the target object is a GameObject or Component, the selection is limited to objects within the same scene as the target.**** (\[GUILayoutOption\[]]\(/engine/6000.7/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`. Additional Resources: [GUILayout.Width](/engine/6000.7/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.7/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.7/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.7/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.7/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.7/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.7/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.7/script-reference/unityengine/guilayout/expandheight.md).

### Returns

| Type                                                            | Description                               |
| --------------------------------------------------------------- | ----------------------------------------- |
| [Object](/engine/6000.7/script-reference/unityengine/object.md) | The object that has been set by the user. |

### Remarks

You can assign objects either by drag and drop or by selecting an object using the Object Picker.

Ensure that the **allowSceneObjects** parameter is false if the object reference is stored as part of an asset, since assets can't store references to objects in a Scene.

If the ObjectField is part of a custom Editor for a script component, use EditorUtility.IsPersistent() to check if the component is on an asset or a Scene object.

See the example in the [Editor](/engine/6000.7/script-reference/unityeditor/editor.md) class for further information.

![QuickHelperObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/QuickHelperObjectField.png)

*Search for a help page by selecting the GameObject in the Object Field.*

```csharp
// EditorScript that quickly searches for a help page
// about the selected Object.
//
// If no such page is found in the Manual it opens the Unity forum.

using UnityEditor;
using UnityEngine;
using System.Collections;

public class ExampleClass : EditorWindow
{
    public Object source;

    [MenuItem("Example/ObjectField Example _h")]
    static void Init()
    {
        var window = GetWindowWithRect<ExampleClass>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        EditorGUILayout.BeginHorizontal();
        source = EditorGUILayout.ObjectField(source, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        if (GUILayout.Button("Search!"))
        {
            if (source == null)
                ShowNotification(new GUIContent("No object selected for searching"));
            else if (Help.HasHelpForObject(source))
                Help.ShowHelpForObject(source);
            else
                Help.BrowseURL("https://forum.unity3d.com/search.php");
        }
    }
}
```

You can also use the `options` parameter to change the look of the control. The following example changes the look of a Sprite ObjectField that is displayed with a large field format.

![SpriteObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/SpriteObjectField.png)

*Two different layout options for a sprite field.*

```csharp
using UnityEditor;
using UnityEngine;

public class SpriteExample : EditorWindow
{
    public Sprite sprite;

    [MenuItem("Example/ObjectField Sprite Example")]
    static void Init()
    {
        var window = GetWindowWithRect<SpriteExample>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        sprite = EditorGUILayout.ObjectField(sprite, typeof(Sprite), false, GUILayout.Height(EditorGUIUtility.singleLineHeight)) as Sprite;
    }
}
```

## ObjectField(Object, Type, bool, GUILayoutOption\[])

Make a field to receive any object type.

```csharp
public static Object ObjectField(Object obj, Type objType, bool allowSceneObjects, params GUILayoutOption[] options)
```

### Parameters

**** (\[Object]\(/engine/6000.7/script-reference/unityengine/object)): The object the field shows.**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of the objects that can be assigned.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Allow assigning Scene objects. See Description for more info.**** (\[GUILayoutOption\[]]\(/engine/6000.7/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`. Additional Resources: [GUILayout.Width](/engine/6000.7/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.7/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.7/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.7/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.7/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.7/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.7/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.7/script-reference/unityengine/guilayout/expandheight.md).

### Returns

| Type                                                            | Description                               |
| --------------------------------------------------------------- | ----------------------------------------- |
| [Object](/engine/6000.7/script-reference/unityengine/object.md) | The object that has been set by the user. |

### Remarks

You can assign objects either by drag and drop or by selecting an object using the Object Picker.

Ensure that the **allowSceneObjects** parameter is false if the object reference is stored as part of an asset, since assets can't store references to objects in a Scene.

If the ObjectField is part of a custom Editor for a script component, use EditorUtility.IsPersistent() to check if the component is on an asset or a Scene object.

See the example in the [Editor](/engine/6000.7/script-reference/unityeditor/editor.md) class for further information.

![QuickHelperObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/QuickHelperObjectField.png)

*Search for a help page by selecting the GameObject in the Object Field.*

```csharp
// EditorScript that quickly searches for a help page
// about the selected Object.
//
// If no such page is found in the Manual it opens the Unity forum.

using UnityEditor;
using UnityEngine;
using System.Collections;

public class ExampleClass : EditorWindow
{
    public Object source;

    [MenuItem("Example/ObjectField Example _h")]
    static void Init()
    {
        var window = GetWindowWithRect<ExampleClass>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        EditorGUILayout.BeginHorizontal();
        source = EditorGUILayout.ObjectField(source, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        if (GUILayout.Button("Search!"))
        {
            if (source == null)
                ShowNotification(new GUIContent("No object selected for searching"));
            else if (Help.HasHelpForObject(source))
                Help.ShowHelpForObject(source);
            else
                Help.BrowseURL("https://forum.unity3d.com/search.php");
        }
    }
}
```

You can also use the `options` parameter to change the look of the control. The following example changes the look of a Sprite ObjectField that is displayed with a large field format.

![SpriteObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/SpriteObjectField.png)

*Two different layout options for a sprite field.*

```csharp
using UnityEditor;
using UnityEngine;

public class SpriteExample : EditorWindow
{
    public Sprite sprite;

    [MenuItem("Example/ObjectField Sprite Example")]
    static void Init()
    {
        var window = GetWindowWithRect<SpriteExample>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        sprite = EditorGUILayout.ObjectField(sprite, typeof(Sprite), false, GUILayout.Height(EditorGUIUtility.singleLineHeight)) as Sprite;
    }
}
```

## ObjectField(string, Object, Type, GUILayoutOption\[])

Make a field to receive any object type.

> **Warning:**
>
> **Deprecated.** Check the docs for the usage of the new parameter 'allowSceneObjects'.

```csharp
public static Object ObjectField(string label, Object obj, Type objType, params GUILayoutOption[] options)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Optional label in front of the field.**** (\[Object]\(/engine/6000.7/script-reference/unityengine/object)): The object the field shows.**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of the objects that can be assigned.**** (\[GUILayoutOption\[]]\(/engine/6000.7/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`. Additional Resources: [GUILayout.Width](/engine/6000.7/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.7/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.7/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.7/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.7/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.7/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.7/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.7/script-reference/unityengine/guilayout/expandheight.md).

### Returns

| Type                                                            | Description                               |
| --------------------------------------------------------------- | ----------------------------------------- |
| [Object](/engine/6000.7/script-reference/unityengine/object.md) | The object that has been set by the user. |

### Remarks

You can assign objects either by drag and drop or by selecting an object using the Object Picker.

Ensure that the **allowSceneObjects** parameter is false if the object reference is stored as part of an asset, since assets can't store references to objects in a Scene.

If the ObjectField is part of a custom Editor for a script component, use EditorUtility.IsPersistent() to check if the component is on an asset or a Scene object.

See the example in the [Editor](/engine/6000.7/script-reference/unityeditor/editor.md) class for further information.

![QuickHelperObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/QuickHelperObjectField.png)

*Search for a help page by selecting the GameObject in the Object Field.*

```csharp
// EditorScript that quickly searches for a help page
// about the selected Object.
//
// If no such page is found in the Manual it opens the Unity forum.

using UnityEditor;
using UnityEngine;
using System.Collections;

public class ExampleClass : EditorWindow
{
    public Object source;

    [MenuItem("Example/ObjectField Example _h")]
    static void Init()
    {
        var window = GetWindowWithRect<ExampleClass>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        EditorGUILayout.BeginHorizontal();
        source = EditorGUILayout.ObjectField(source, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        if (GUILayout.Button("Search!"))
        {
            if (source == null)
                ShowNotification(new GUIContent("No object selected for searching"));
            else if (Help.HasHelpForObject(source))
                Help.ShowHelpForObject(source);
            else
                Help.BrowseURL("https://forum.unity3d.com/search.php");
        }
    }
}
```

You can also use the `options` parameter to change the look of the control. The following example changes the look of a Sprite ObjectField that is displayed with a large field format.

![SpriteObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/SpriteObjectField.png)

*Two different layout options for a sprite field.*

```csharp
using UnityEditor;
using UnityEngine;

public class SpriteExample : EditorWindow
{
    public Sprite sprite;

    [MenuItem("Example/ObjectField Sprite Example")]
    static void Init()
    {
        var window = GetWindowWithRect<SpriteExample>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        sprite = EditorGUILayout.ObjectField(sprite, typeof(Sprite), false, GUILayout.Height(EditorGUIUtility.singleLineHeight)) as Sprite;
    }
}
```

## ObjectField(string, Object, Type, Object, GUILayoutOption\[])

Make a field to receive any object type.

```csharp
public static Object ObjectField(string label, Object obj, Type objType, Object targetBeingEdited, params GUILayoutOption[] options)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Optional label in front of the field.**** (\[Object]\(/engine/6000.7/script-reference/unityengine/object)): The object the field shows.**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of the objects that can be assigned.**** (\[Object]\(/engine/6000.7/script-reference/unityengine/object)): Optional object used to filter selection criteria. If the target object is persistent, scene objects are available for selection. If the target object is a GameObject or Component, the selection is limited to objects within the same scene as the target.**** (\[GUILayoutOption\[]]\(/engine/6000.7/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`. Additional Resources: [GUILayout.Width](/engine/6000.7/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.7/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.7/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.7/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.7/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.7/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.7/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.7/script-reference/unityengine/guilayout/expandheight.md).

### Returns

| Type                                                            | Description                               |
| --------------------------------------------------------------- | ----------------------------------------- |
| [Object](/engine/6000.7/script-reference/unityengine/object.md) | The object that has been set by the user. |

### Remarks

You can assign objects either by drag and drop or by selecting an object using the Object Picker.

Ensure that the **allowSceneObjects** parameter is false if the object reference is stored as part of an asset, since assets can't store references to objects in a Scene.

If the ObjectField is part of a custom Editor for a script component, use EditorUtility.IsPersistent() to check if the component is on an asset or a Scene object.

See the example in the [Editor](/engine/6000.7/script-reference/unityeditor/editor.md) class for further information.

![QuickHelperObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/QuickHelperObjectField.png)

*Search for a help page by selecting the GameObject in the Object Field.*

```csharp
// EditorScript that quickly searches for a help page
// about the selected Object.
//
// If no such page is found in the Manual it opens the Unity forum.

using UnityEditor;
using UnityEngine;
using System.Collections;

public class ExampleClass : EditorWindow
{
    public Object source;

    [MenuItem("Example/ObjectField Example _h")]
    static void Init()
    {
        var window = GetWindowWithRect<ExampleClass>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        EditorGUILayout.BeginHorizontal();
        source = EditorGUILayout.ObjectField(source, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        if (GUILayout.Button("Search!"))
        {
            if (source == null)
                ShowNotification(new GUIContent("No object selected for searching"));
            else if (Help.HasHelpForObject(source))
                Help.ShowHelpForObject(source);
            else
                Help.BrowseURL("https://forum.unity3d.com/search.php");
        }
    }
}
```

You can also use the `options` parameter to change the look of the control. The following example changes the look of a Sprite ObjectField that is displayed with a large field format.

![SpriteObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/SpriteObjectField.png)

*Two different layout options for a sprite field.*

```csharp
using UnityEditor;
using UnityEngine;

public class SpriteExample : EditorWindow
{
    public Sprite sprite;

    [MenuItem("Example/ObjectField Sprite Example")]
    static void Init()
    {
        var window = GetWindowWithRect<SpriteExample>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        sprite = EditorGUILayout.ObjectField(sprite, typeof(Sprite), false, GUILayout.Height(EditorGUIUtility.singleLineHeight)) as Sprite;
    }
}
```

## ObjectField(string, Object, Type, bool, GUILayoutOption\[])

Make a field to receive any object type.

```csharp
public static Object ObjectField(string label, Object obj, Type objType, bool allowSceneObjects, params GUILayoutOption[] options)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Optional label in front of the field.**** (\[Object]\(/engine/6000.7/script-reference/unityengine/object)): The object the field shows.**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of the objects that can be assigned.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Allow assigning Scene objects. See Description for more info.**** (\[GUILayoutOption\[]]\(/engine/6000.7/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`. Additional Resources: [GUILayout.Width](/engine/6000.7/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.7/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.7/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.7/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.7/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.7/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.7/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.7/script-reference/unityengine/guilayout/expandheight.md).

### Returns

| Type                                                            | Description                               |
| --------------------------------------------------------------- | ----------------------------------------- |
| [Object](/engine/6000.7/script-reference/unityengine/object.md) | The object that has been set by the user. |

### Remarks

You can assign objects either by drag and drop or by selecting an object using the Object Picker.

Ensure that the **allowSceneObjects** parameter is false if the object reference is stored as part of an asset, since assets can't store references to objects in a Scene.

If the ObjectField is part of a custom Editor for a script component, use EditorUtility.IsPersistent() to check if the component is on an asset or a Scene object.

See the example in the [Editor](/engine/6000.7/script-reference/unityeditor/editor.md) class for further information.

![QuickHelperObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/QuickHelperObjectField.png)

*Search for a help page by selecting the GameObject in the Object Field.*

```csharp
// EditorScript that quickly searches for a help page
// about the selected Object.
//
// If no such page is found in the Manual it opens the Unity forum.

using UnityEditor;
using UnityEngine;
using System.Collections;

public class ExampleClass : EditorWindow
{
    public Object source;

    [MenuItem("Example/ObjectField Example _h")]
    static void Init()
    {
        var window = GetWindowWithRect<ExampleClass>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        EditorGUILayout.BeginHorizontal();
        source = EditorGUILayout.ObjectField(source, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        if (GUILayout.Button("Search!"))
        {
            if (source == null)
                ShowNotification(new GUIContent("No object selected for searching"));
            else if (Help.HasHelpForObject(source))
                Help.ShowHelpForObject(source);
            else
                Help.BrowseURL("https://forum.unity3d.com/search.php");
        }
    }
}
```

You can also use the `options` parameter to change the look of the control. The following example changes the look of a Sprite ObjectField that is displayed with a large field format.

![SpriteObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/SpriteObjectField.png)

*Two different layout options for a sprite field.*

```csharp
using UnityEditor;
using UnityEngine;

public class SpriteExample : EditorWindow
{
    public Sprite sprite;

    [MenuItem("Example/ObjectField Sprite Example")]
    static void Init()
    {
        var window = GetWindowWithRect<SpriteExample>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        sprite = EditorGUILayout.ObjectField(sprite, typeof(Sprite), false, GUILayout.Height(EditorGUIUtility.singleLineHeight)) as Sprite;
    }
}
```

## ObjectField(GUIContent, Object, Type, GUILayoutOption\[])

Make a field to receive any object type.

> **Warning:**
>
> **Deprecated.** Check the docs for the usage of the new parameter 'allowSceneObjects'.

```csharp
public static Object ObjectField(GUIContent label, Object obj, Type objType, params GUILayoutOption[] options)
```

### Parameters

**** (\[GUIContent]\(/engine/6000.7/script-reference/unityengine/guicontent)): Optional label in front of the field.**** (\[Object]\(/engine/6000.7/script-reference/unityengine/object)): The object the field shows.**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of the objects that can be assigned.**** (\[GUILayoutOption\[]]\(/engine/6000.7/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`. Additional Resources: [GUILayout.Width](/engine/6000.7/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.7/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.7/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.7/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.7/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.7/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.7/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.7/script-reference/unityengine/guilayout/expandheight.md).

### Returns

| Type                                                            | Description                               |
| --------------------------------------------------------------- | ----------------------------------------- |
| [Object](/engine/6000.7/script-reference/unityengine/object.md) | The object that has been set by the user. |

### Remarks

You can assign objects either by drag and drop or by selecting an object using the Object Picker.

Ensure that the **allowSceneObjects** parameter is false if the object reference is stored as part of an asset, since assets can't store references to objects in a Scene.

If the ObjectField is part of a custom Editor for a script component, use EditorUtility.IsPersistent() to check if the component is on an asset or a Scene object.

See the example in the [Editor](/engine/6000.7/script-reference/unityeditor/editor.md) class for further information.

![QuickHelperObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/QuickHelperObjectField.png)

*Search for a help page by selecting the GameObject in the Object Field.*

```csharp
// EditorScript that quickly searches for a help page
// about the selected Object.
//
// If no such page is found in the Manual it opens the Unity forum.

using UnityEditor;
using UnityEngine;
using System.Collections;

public class ExampleClass : EditorWindow
{
    public Object source;

    [MenuItem("Example/ObjectField Example _h")]
    static void Init()
    {
        var window = GetWindowWithRect<ExampleClass>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        EditorGUILayout.BeginHorizontal();
        source = EditorGUILayout.ObjectField(source, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        if (GUILayout.Button("Search!"))
        {
            if (source == null)
                ShowNotification(new GUIContent("No object selected for searching"));
            else if (Help.HasHelpForObject(source))
                Help.ShowHelpForObject(source);
            else
                Help.BrowseURL("https://forum.unity3d.com/search.php");
        }
    }
}
```

You can also use the `options` parameter to change the look of the control. The following example changes the look of a Sprite ObjectField that is displayed with a large field format.

![SpriteObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/SpriteObjectField.png)

*Two different layout options for a sprite field.*

```csharp
using UnityEditor;
using UnityEngine;

public class SpriteExample : EditorWindow
{
    public Sprite sprite;

    [MenuItem("Example/ObjectField Sprite Example")]
    static void Init()
    {
        var window = GetWindowWithRect<SpriteExample>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        sprite = EditorGUILayout.ObjectField(sprite, typeof(Sprite), false, GUILayout.Height(EditorGUIUtility.singleLineHeight)) as Sprite;
    }
}
```

## ObjectField(GUIContent, Object, Type, Object, GUILayoutOption\[])

Make a field to receive any object type.

```csharp
public static Object ObjectField(GUIContent label, Object obj, Type objType, Object targetBeingEdited, params GUILayoutOption[] options)
```

### Parameters

**** (\[GUIContent]\(/engine/6000.7/script-reference/unityengine/guicontent)): Optional label in front of the field.**** (\[Object]\(/engine/6000.7/script-reference/unityengine/object)): The object the field shows.**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of the objects that can be assigned.**** (\[Object]\(/engine/6000.7/script-reference/unityengine/object)): Optional object used to filter selection criteria. If the target object is persistent, scene objects are available for selection. If the target object is a GameObject or Component, the selection is limited to objects within the same scene as the target.**** (\[GUILayoutOption\[]]\(/engine/6000.7/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`. Additional Resources: [GUILayout.Width](/engine/6000.7/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.7/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.7/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.7/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.7/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.7/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.7/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.7/script-reference/unityengine/guilayout/expandheight.md).

### Returns

| Type                                                            | Description                               |
| --------------------------------------------------------------- | ----------------------------------------- |
| [Object](/engine/6000.7/script-reference/unityengine/object.md) | The object that has been set by the user. |

### Remarks

You can assign objects either by drag and drop or by selecting an object using the Object Picker.

Ensure that the **allowSceneObjects** parameter is false if the object reference is stored as part of an asset, since assets can't store references to objects in a Scene.

If the ObjectField is part of a custom Editor for a script component, use EditorUtility.IsPersistent() to check if the component is on an asset or a Scene object.

See the example in the [Editor](/engine/6000.7/script-reference/unityeditor/editor.md) class for further information.

![QuickHelperObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/QuickHelperObjectField.png)

*Search for a help page by selecting the GameObject in the Object Field.*

```csharp
// EditorScript that quickly searches for a help page
// about the selected Object.
//
// If no such page is found in the Manual it opens the Unity forum.

using UnityEditor;
using UnityEngine;
using System.Collections;

public class ExampleClass : EditorWindow
{
    public Object source;

    [MenuItem("Example/ObjectField Example _h")]
    static void Init()
    {
        var window = GetWindowWithRect<ExampleClass>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        EditorGUILayout.BeginHorizontal();
        source = EditorGUILayout.ObjectField(source, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        if (GUILayout.Button("Search!"))
        {
            if (source == null)
                ShowNotification(new GUIContent("No object selected for searching"));
            else if (Help.HasHelpForObject(source))
                Help.ShowHelpForObject(source);
            else
                Help.BrowseURL("https://forum.unity3d.com/search.php");
        }
    }
}
```

You can also use the `options` parameter to change the look of the control. The following example changes the look of a Sprite ObjectField that is displayed with a large field format.

![SpriteObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/SpriteObjectField.png)

*Two different layout options for a sprite field.*

```csharp
using UnityEditor;
using UnityEngine;

public class SpriteExample : EditorWindow
{
    public Sprite sprite;

    [MenuItem("Example/ObjectField Sprite Example")]
    static void Init()
    {
        var window = GetWindowWithRect<SpriteExample>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        sprite = EditorGUILayout.ObjectField(sprite, typeof(Sprite), false, GUILayout.Height(EditorGUIUtility.singleLineHeight)) as Sprite;
    }
}
```

## ObjectField(GUIContent, Object, Type, bool, GUILayoutOption\[])

Make a field to receive any object type.

```csharp
public static Object ObjectField(GUIContent label, Object obj, Type objType, bool allowSceneObjects, params GUILayoutOption[] options)
```

### Parameters

**** (\[GUIContent]\(/engine/6000.7/script-reference/unityengine/guicontent)): Optional label in front of the field.**** (\[Object]\(/engine/6000.7/script-reference/unityengine/object)): The object the field shows.**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of the objects that can be assigned.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): Allow assigning Scene objects. See Description for more info.**** (\[GUILayoutOption\[]]\(/engine/6000.7/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`. Additional Resources: [GUILayout.Width](/engine/6000.7/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.7/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.7/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.7/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.7/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.7/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.7/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.7/script-reference/unityengine/guilayout/expandheight.md).

### Returns

| Type                                                            | Description                               |
| --------------------------------------------------------------- | ----------------------------------------- |
| [Object](/engine/6000.7/script-reference/unityengine/object.md) | The object that has been set by the user. |

### Remarks

You can assign objects either by drag and drop or by selecting an object using the Object Picker.

Ensure that the **allowSceneObjects** parameter is false if the object reference is stored as part of an asset, since assets can't store references to objects in a Scene.

If the ObjectField is part of a custom Editor for a script component, use EditorUtility.IsPersistent() to check if the component is on an asset or a Scene object.

See the example in the [Editor](/engine/6000.7/script-reference/unityeditor/editor.md) class for further information.

![QuickHelperObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/QuickHelperObjectField.png)

*Search for a help page by selecting the GameObject in the Object Field.*

```csharp
// EditorScript that quickly searches for a help page
// about the selected Object.
//
// If no such page is found in the Manual it opens the Unity forum.

using UnityEditor;
using UnityEngine;
using System.Collections;

public class ExampleClass : EditorWindow
{
    public Object source;

    [MenuItem("Example/ObjectField Example _h")]
    static void Init()
    {
        var window = GetWindowWithRect<ExampleClass>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        EditorGUILayout.BeginHorizontal();
        source = EditorGUILayout.ObjectField(source, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        if (GUILayout.Button("Search!"))
        {
            if (source == null)
                ShowNotification(new GUIContent("No object selected for searching"));
            else if (Help.HasHelpForObject(source))
                Help.ShowHelpForObject(source);
            else
                Help.BrowseURL("https://forum.unity3d.com/search.php");
        }
    }
}
```

You can also use the `options` parameter to change the look of the control. The following example changes the look of a Sprite ObjectField that is displayed with a large field format.

![SpriteObjectField (ObjectField)](/api/media?file=/engine/6000.7/media/images/SpriteObjectField.png)

*Two different layout options for a sprite field.*

```csharp
using UnityEditor;
using UnityEngine;

public class SpriteExample : EditorWindow
{
    public Sprite sprite;

    [MenuItem("Example/ObjectField Sprite Example")]
    static void Init()
    {
        var window = GetWindowWithRect<SpriteExample>(new Rect(0, 0, 165, 100));
        window.Show();
    }

    void OnGUI()
    {
        sprite = EditorGUILayout.ObjectField(sprite, typeof(Sprite), false, GUILayout.Height(EditorGUIUtility.singleLineHeight)) as Sprite;
    }
}
```

## ObjectField(SerializedProperty, GUILayoutOption\[])

Make a field to receive any object type.

```csharp
public static void ObjectField(SerializedProperty property, params GUILayoutOption[] options)
```

### Parameters

**** (\[SerializedProperty]\(/engine/6000.7/script-reference/unityeditor/serializedproperty)): The object reference property the field shows.**** (\[GUILayoutOption\[]]\(/engine/6000.7/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`.\
&#x20;Additional Resources: [GUILayout.Width](/engine/6000.7/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.7/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.7/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.7/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.7/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.7/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.7/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.7/script-reference/unityengine/guilayout/expandheight.md).

### Remarks

Obsoleted. Use the overloads at the top of the page, with the **allowSceneObjects** parameter.

## ObjectField(SerializedProperty, GUIContent, GUILayoutOption\[])

Make a field to receive any object type.

```csharp
public static void ObjectField(SerializedProperty property, GUIContent label, params GUILayoutOption[] options)
```

### Parameters

**** (\[SerializedProperty]\(/engine/6000.7/script-reference/unityeditor/serializedproperty)): The object reference property the field shows.**** (\[GUIContent]\(/engine/6000.7/script-reference/unityengine/guicontent)): Optional label in front of the field. Pass [GUIContent.none](/engine/6000.7/script-reference/unityengine/guicontent/none.md) to hide the label.**** (\[GUILayoutOption\[]]\(/engine/6000.7/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`.\
&#x20;Additional Resources: [GUILayout.Width](/engine/6000.7/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.7/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.7/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.7/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.7/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.7/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.7/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.7/script-reference/unityengine/guilayout/expandheight.md).

### Remarks

Obsoleted. Use the overloads at the top of the page, with the **allowSceneObjects** parameter.

## ObjectField(SerializedProperty, Type, GUILayoutOption\[])

Make a field to receive any object type.

```csharp
public static void ObjectField(SerializedProperty property, Type objType, params GUILayoutOption[] options)
```

### Parameters

**** (\[SerializedProperty]\(/engine/6000.7/script-reference/unityeditor/serializedproperty)): The object reference property the field shows.**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of the objects that can be assigned.**** (\[GUILayoutOption\[]]\(/engine/6000.7/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`.\
&#x20;Additional Resources: [GUILayout.Width](/engine/6000.7/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.7/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.7/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.7/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.7/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.7/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.7/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.7/script-reference/unityengine/guilayout/expandheight.md).

### Remarks

Obsoleted. Use the overloads at the top of the page, with the **allowSceneObjects** parameter.

## ObjectField(SerializedProperty, Type, GUIContent, GUILayoutOption\[])

Make a field to receive any object type.

```csharp
public static void ObjectField(SerializedProperty property, Type objType, GUIContent label, params GUILayoutOption[] options)
```

### Parameters

**** (\[SerializedProperty]\(/engine/6000.7/script-reference/unityeditor/serializedproperty)): The object reference property the field shows.**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of the objects that can be assigned.**** (\[GUIContent]\(/engine/6000.7/script-reference/unityengine/guicontent)): Optional label in front of the field. Pass [GUIContent.none](/engine/6000.7/script-reference/unityengine/guicontent/none.md) to hide the label.**** (\[GUILayoutOption\[]]\(/engine/6000.7/script-reference/unityengine/guilayoutoption)): An optional list of layout options that specify extra layout properties. Any values passed in here will override settings defined by the `style`.\
&#x20;Additional Resources: [GUILayout.Width](/engine/6000.7/script-reference/unityengine/guilayout/width.md), [GUILayout.Height](/engine/6000.7/script-reference/unityengine/guilayout/height.md), [GUILayout.MinWidth](/engine/6000.7/script-reference/unityengine/guilayout/minwidth.md), [GUILayout.MaxWidth](/engine/6000.7/script-reference/unityengine/guilayout/maxwidth.md), [GUILayout.MinHeight](/engine/6000.7/script-reference/unityengine/guilayout/minheight.md), [GUILayout.MaxHeight](/engine/6000.7/script-reference/unityengine/guilayout/maxheight.md), [GUILayout.ExpandWidth](/engine/6000.7/script-reference/unityengine/guilayout/expandwidth.md), [GUILayout.ExpandHeight](/engine/6000.7/script-reference/unityengine/guilayout/expandheight.md).

### Remarks

Obsoleted. Use the overloads at the top of the page, with the **allowSceneObjects** parameter.
