# FindObjectsByType

> Retrieves a list of all loaded objects of Type type and sorts the results according to sortMode.

## Definition

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

## FindObjectsByType(Type, FindObjectsSortMode)

Retrieves a list of all loaded objects of Type `type` and sorts the results according to `sortMode`.

> **Warning:**
>
> **Deprecated.** FindObjectsByType with FindObjectsSortMode parameter has been deprecated. Use FindObjectsByType(Type) or FindObjectsByType(Type, FindObjectsInactive) instead. InstanceID will be replaced in the future with EntityId and previous sort order cannot be maintained.

```csharp
public static Object[] FindObjectsByType(Type type, FindObjectsSortMode sortMode)
```

### Parameters

**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of object to find. Must be a reference type derived from UnityEngine.Object.**** (\[FindObjectsSortMode]\(/engine/6000.7/script-reference/unityengine/findobjectssortmode)): Whether and how to sort the returned array. Not sorting saves time, which can be significant if the search returns many objects.

### Returns

| Type                                                                | Description          |
| ------------------------------------------------------------------- | -------------------- |
| [Object\[\]](/engine/6000.7/script-reference/unityengine/object.md) | An array of objects. |

### Remarks

**Obsolete**: These overloads are obsolete because they take a `sortMode` parameter. Use `FindObjectsByType(Type)` or `FindObjectsByType(Type, FindObjectsInactive)` instead. A sort order that relies on InstanceID can't be maintained in future versions.

## FindObjectsByType(Type, FindObjectsInactive, FindObjectsSortMode)

Retrieves a list of all loaded objects of Type `type` and sorts the results according to `sortMode`.

> **Warning:**
>
> **Deprecated.** FindObjectsByType with FindObjectsSortMode parameter has been deprecated. Use FindObjectsByType(Type) or FindObjectsByType(Type, FindObjectsInactive) instead. InstanceID will be replaced in the future with EntityId and previous sort order cannot be maintained.

```csharp
public static Object[] FindObjectsByType(Type type, FindObjectsInactive findObjectsInactive, FindObjectsSortMode sortMode)
```

### Parameters

**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of object to find. Must be a reference type derived from UnityEngine.Object.**** (\[FindObjectsInactive]\(/engine/6000.7/script-reference/unityengine/findobjectsinactive)): Whether to include components attached to inactive GameObjects. If you don't specify this parameter, this function doesn't include inactive objects in the results.**** (\[FindObjectsSortMode]\(/engine/6000.7/script-reference/unityengine/findobjectssortmode)): Whether and how to sort the returned array. Not sorting saves time, which can be significant if the search returns many objects.

### Returns

| Type                                                                | Description          |
| ------------------------------------------------------------------- | -------------------- |
| [Object\[\]](/engine/6000.7/script-reference/unityengine/object.md) | An array of objects. |

### Remarks

**Obsolete**: These overloads are obsolete because they take a `sortMode` parameter. Use `FindObjectsByType(Type)` or `FindObjectsByType(Type, FindObjectsInactive)` instead. A sort order that relies on InstanceID can't be maintained in future versions.

## FindObjectsByType(Type)

Retrieves a list of all active loaded objects of Type `type`.

```csharp
public static Object[] FindObjectsByType(Type type)
```

### Parameters

**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of object to find. Must be a reference type derived from UnityEngine.Object.

### Returns

| Type                                                                | Description          |
| ------------------------------------------------------------------- | -------------------- |
| [Object\[\]](/engine/6000.7/script-reference/unityengine/object.md) | An array of objects. |

## FindObjectsByType(Type, FindObjectsInactive)

Retrieves a list of all loaded objects of Type `type`.

```csharp
public static Object[] FindObjectsByType(Type type, FindObjectsInactive findObjectsInactive)
```

### Parameters

**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of object to find. Must be a reference type derived from UnityEngine.Object.**** (\[FindObjectsInactive]\(/engine/6000.7/script-reference/unityengine/findobjectsinactive)): Whether to include components attached to inactive GameObjects. If you don't specify this parameter, this function doesn't include inactive objects in the results.

### Returns

| Type                                                                | Description          |
| ------------------------------------------------------------------- | -------------------- |
| [Object\[\]](/engine/6000.7/script-reference/unityengine/object.md) | An array of objects. |

### Remarks

`FindObjectsByType` doesn't return assets (for example meshes, textures, or prefabs). It also doesn't return objects that have [HideFlags.DontSave](/engine/6000.7/script-reference/unityengine/hideflags/dontsave.md) set.Use [Resources.FindObjectsOfTypeAll](/engine/6000.7/script-reference/unityengine/resources/findobjectsoftypeall.md) to avoid these limitations.

You can't use `Object.FindObjectsByType` with interfaces directly. Instead, find all components of a base type and then filter the results by interface using LINQ's `OfType`.

In the Editor, `FindObjectsByType` searches the Scene view by default. If you want to find an object in the Prefab stage, use the [StageUtility](/engine/6000.7/script-reference/unityeditor/scenemanagement/stageutility.md) APIs.

```csharp
using UnityEngine;

// Ten GameObjects are created and have TextMesh and
// CanvasRenderer components added.
// When the game runs press the Space key to display the
// number of TextMesh and CanvasRenderer components.

public class ScriptExample : MonoBehaviour
{
    private const int count = 10;

    void Start()
    {
        var gameObjects = new GameObject[count];
        var expectedTextMeshObjects = new TextMesh[count];
        var expectedCanvasObjects = new CanvasRenderer[count];

        for (var i = 0; i < count; ++i)
        {
            gameObjects[i] = new GameObject();
            expectedTextMeshObjects[i] = gameObjects[i].AddComponent<TextMesh>();
            expectedCanvasObjects[i] = gameObjects[i].AddComponent<CanvasRenderer>();
        }
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            var foundCanvasObjects = FindObjectsByType<CanvasRenderer>();
            var foundTextMeshObjects = FindObjectsByType(typeof(TextMesh));
            Debug.Log(foundCanvasObjects + " : " + foundCanvasObjects.Length);
            Debug.Log(foundTextMeshObjects + " : " + foundTextMeshObjects.Length);
        }
    }
}
```

Additional Resources: [Object.FindFirstObjectByType](/engine/6000.7/script-reference/unityengine/object/findfirstobjectbytype.md), [Object.FindAnyObjectByType](/engine/6000.7/script-reference/unityengine/object/findanyobjectbytype.md).

## FindObjectsByType\<T>(FindObjectsSortMode)

Retrieves a list of all loaded objects of Type T.

> **Warning:**
>
> **Deprecated.** FindObjectsByType with FindObjectsSortMode parameter has been deprecated. Use FindObjectsByType\\\<T\\>() or FindObjectsByType\\\<T\\>(FindObjectsInactive) instead. InstanceID will be replaced in the future with EntityId and previous sort order cannot be maintained.

```csharp
public static T[] FindObjectsByType<T>(FindObjectsSortMode sortMode) where T : Object
```

### Parameters

**** (\[FindObjectsSortMode]\(/engine/6000.7/script-reference/unityengine/findobjectssortmode)): Whether and how to sort the returned array. Not sorting saves time, which can be significant if the search returns many objects.

### Returns

| Type              | Description                                             |
| ----------------- | ------------------------------------------------------- |
| [\<T>\[\]](./.md) | The array of objects found matching the type specified. |

### Remarks

**Obsolete**: These overloads are obsolete because they take a `sortMode` parameter. Use `FindObjectsByType<T>()` or `FindObjectsByType<T>(FindObjectsInactive)` instead. A sort order that relies on InstanceID can't be maintained in future versions.

## FindObjectsByType\<T>(FindObjectsInactive, FindObjectsSortMode)

Retrieves a list of all loaded objects of Type T.

> **Warning:**
>
> **Deprecated.** FindObjectsByType with FindObjectsSortMode parameter has been deprecated. Use FindObjectsByType\\\<T\\>() or FindObjectsByType\\\<T\\>(FindObjectsInactive) instead. InstanceID will be replaced in the future with EntityId and previous sort order cannot be maintained.

```csharp
public static T[] FindObjectsByType<T>(FindObjectsInactive findObjectsInactive, FindObjectsSortMode sortMode) where T : Object
```

### Parameters

**** (\[FindObjectsInactive]\(/engine/6000.7/script-reference/unityengine/findobjectsinactive)): Whether to include components attached to inactive GameObjects. If you don't specify this parameter, this function doesn't include inactive objects in the results.**** (\[FindObjectsSortMode]\(/engine/6000.7/script-reference/unityengine/findobjectssortmode)): Whether and how to sort the returned array. Not sorting saves time, which can be significant if the search returns many objects.

### Returns

| Type              | Description                                             |
| ----------------- | ------------------------------------------------------- |
| [\<T>\[\]](./.md) | The array of objects found matching the type specified. |

### Remarks

**Obsolete**: These overloads are obsolete because they take a `sortMode` parameter. Use `FindObjectsByType<T>()` or `FindObjectsByType<T>(FindObjectsInactive)` instead. A sort order that relies on InstanceID can't be maintained in future versions.

## FindObjectsByType\<T>()

Retrieves a list of all active loaded objects of type T.

```csharp
public static T[] FindObjectsByType<T>() where T : Object
```

### Returns

| Type              | Description                                             |
| ----------------- | ------------------------------------------------------- |
| [\<T>\[\]](./.md) | The array of objects found matching the type specified. |

## FindObjectsByType\<T>(FindObjectsInactive)

Retrieves a list of all loaded objects of type T, with the option to include inactive objects.

```csharp
public static T[] FindObjectsByType<T>(FindObjectsInactive findObjectsInactive) where T : Object
```

### Parameters

**** (\[FindObjectsInactive]\(/engine/6000.7/script-reference/unityengine/findobjectsinactive)): Whether to include components attached to inactive GameObjects. If you don't specify this parameter, this function doesn't include inactive objects in the results.

### Returns

| Type              | Description                                             |
| ----------------- | ------------------------------------------------------- |
| [\<T>\[\]](./.md) | The array of objects found matching the type specified. |
