# FindObjectsOfType

> Gets a list of all loaded objects of Type type.

## Definition

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

## FindObjectsOfType(Type)

Gets a list of all loaded objects of Type type.

> **Warning:**
>
> **Deprecated.** Object.FindObjectsOfType has been deprecated. Use Object.FindObjectsByType instead which lets you decide whether you need the results sorted or not.  FindObjectsOfType sorts the results by InstanceID, but if you do not need this using FindObjectSortMode.None is considerably faster.

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

### Parameters

**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of object to find.

### Returns

| Type                                                                | Description                                             |
| ------------------------------------------------------------------- | ------------------------------------------------------- |
| [Object\[\]](/engine/6000.0/script-reference/unityengine/object.md) | The array of objects found matching the type specified. |

### Remarks

This does not return assets (such as meshes, textures or prefabs), or objects with [HideFlags.DontSave](/engine/6000.0/script-reference/unityengine/hideflags/dontsave.md) set. Objects attached to inactive GameObjects are only included if `includeInactive` is set to true. Use [Resources.FindObjectsOfTypeAll](/engine/6000.0/script-reference/unityengine/resources/findobjectsoftypeall.md) to avoid these limitations.

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

**Note**: This function is very slow. It is not recommended to use this function every frame. In most cases you can use the singleton pattern instead.

**Obsolete**: This function is obsolete, use [Object.FindObjectsByType](/engine/6000.0/script-reference/unityengine/object/findobjectsbytype.md) instead. This replacement allows you to specify whether to sort the resulting array. FindObjectsOfType() always sorts by InstanceID, so calling FindObjectsByType(FindObjectsSortMode.InstanceID) produces identical results. If you specify not to sort the array, the function runs significantly faster, however, the order of the results can change between calls.

```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 = FindObjectsOfType<CanvasRenderer>();
            var foundTextMeshObjects = FindObjectsOfType(typeof(TextMesh));
            Debug.Log(foundCanvasObjects + " : " + foundCanvasObjects.Length);
            Debug.Log(foundTextMeshObjects + " : " + foundTextMeshObjects.Length);
        }
    }
}
```

Additional Resources: [Object.FindObjectsByType](/engine/6000.0/script-reference/unityengine/object/findobjectsbytype.md).

## FindObjectsOfType(Type, bool)

Gets a list of all loaded objects of Type type.

> **Warning:**
>
> **Deprecated.** Object.FindObjectsOfType has been deprecated. Use Object.FindObjectsByType instead which lets you decide whether you need the results sorted or not.  FindObjectsOfType sorts the results by InstanceID but if you do not need this using FindObjectSortMode.None is considerably faster.

```csharp
public static Object[] FindObjectsOfType(Type type, bool includeInactive)
```

### Parameters

**** (\[Type]\(https\://learn.microsoft.com/dotnet/api/system.type)): The type of object to find.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): If true, components attached to inactive GameObjects are also included.

### Returns

| Type                                                                | Description                                             |
| ------------------------------------------------------------------- | ------------------------------------------------------- |
| [Object\[\]](/engine/6000.0/script-reference/unityengine/object.md) | The array of objects found matching the type specified. |

### Remarks

This does not return assets (such as meshes, textures or prefabs), or objects with [HideFlags.DontSave](/engine/6000.0/script-reference/unityengine/hideflags/dontsave.md) set. Objects attached to inactive GameObjects are only included if `includeInactive` is set to true. Use [Resources.FindObjectsOfTypeAll](/engine/6000.0/script-reference/unityengine/resources/findobjectsoftypeall.md) to avoid these limitations.

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

**Note**: This function is very slow. It is not recommended to use this function every frame. In most cases you can use the singleton pattern instead.

**Obsolete**: This function is obsolete, use [Object.FindObjectsByType](/engine/6000.0/script-reference/unityengine/object/findobjectsbytype.md) instead. This replacement allows you to specify whether to sort the resulting array. FindObjectsOfType() always sorts by InstanceID, so calling FindObjectsByType(FindObjectsSortMode.InstanceID) produces identical results. If you specify not to sort the array, the function runs significantly faster, however, the order of the results can change between calls.

```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 = FindObjectsOfType<CanvasRenderer>();
            var foundTextMeshObjects = FindObjectsOfType(typeof(TextMesh));
            Debug.Log(foundCanvasObjects + " : " + foundCanvasObjects.Length);
            Debug.Log(foundTextMeshObjects + " : " + foundTextMeshObjects.Length);
        }
    }
}
```

Additional Resources: [Object.FindObjectsByType](/engine/6000.0/script-reference/unityengine/object/findobjectsbytype.md).

## FindObjectsOfType\<T>()

Gets a list of all loaded objects of Type type.

> **Warning:**
>
> **Deprecated.** Object.FindObjectsOfType has been deprecated. Use Object.FindObjectsByType instead which lets you decide whether you need the results sorted or not.  FindObjectsOfType sorts the results by InstanceID but if you do not need this using FindObjectSortMode.None is considerably faster.

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

### Returns

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

### Remarks

This does not return assets (such as meshes, textures or prefabs), or objects with [HideFlags.DontSave](/engine/6000.0/script-reference/unityengine/hideflags/dontsave.md) set. Objects attached to inactive GameObjects are only included if `includeInactive` is set to true. Use [Resources.FindObjectsOfTypeAll](/engine/6000.0/script-reference/unityengine/resources/findobjectsoftypeall.md) to avoid these limitations.

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

**Note**: This function is very slow. It is not recommended to use this function every frame. In most cases you can use the singleton pattern instead.

**Obsolete**: This function is obsolete, use [Object.FindObjectsByType](/engine/6000.0/script-reference/unityengine/object/findobjectsbytype.md) instead. This replacement allows you to specify whether to sort the resulting array. FindObjectsOfType() always sorts by InstanceID, so calling FindObjectsByType(FindObjectsSortMode.InstanceID) produces identical results. If you specify not to sort the array, the function runs significantly faster, however, the order of the results can change between calls.

```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 = FindObjectsOfType<CanvasRenderer>();
            var foundTextMeshObjects = FindObjectsOfType(typeof(TextMesh));
            Debug.Log(foundCanvasObjects + " : " + foundCanvasObjects.Length);
            Debug.Log(foundTextMeshObjects + " : " + foundTextMeshObjects.Length);
        }
    }
}
```

Additional Resources: [Object.FindObjectsByType](/engine/6000.0/script-reference/unityengine/object/findobjectsbytype.md).

## FindObjectsOfType\<T>(bool)

Gets a list of all loaded objects of Type type.

> **Warning:**
>
> **Deprecated.** Object.FindObjectsOfType has been deprecated. Use Object.FindObjectsByType instead which lets you decide whether you need the results sorted or not.  FindObjectsOfType sorts the results by InstanceID but if you do not need this using FindObjectSortMode.None is considerably faster.

```csharp
public static T[] FindObjectsOfType<T>(bool includeInactive) where T : Object
```

### Parameters

**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): If true, components attached to inactive GameObjects are also included.

### Returns

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

### Remarks

This does not return assets (such as meshes, textures or prefabs), or objects with [HideFlags.DontSave](/engine/6000.0/script-reference/unityengine/hideflags/dontsave.md) set. Objects attached to inactive GameObjects are only included if `includeInactive` is set to true. Use [Resources.FindObjectsOfTypeAll](/engine/6000.0/script-reference/unityengine/resources/findobjectsoftypeall.md) to avoid these limitations.

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

**Note**: This function is very slow. It is not recommended to use this function every frame. In most cases you can use the singleton pattern instead.

**Obsolete**: This function is obsolete, use [Object.FindObjectsByType](/engine/6000.0/script-reference/unityengine/object/findobjectsbytype.md) instead. This replacement allows you to specify whether to sort the resulting array. FindObjectsOfType() always sorts by InstanceID, so calling FindObjectsByType(FindObjectsSortMode.InstanceID) produces identical results. If you specify not to sort the array, the function runs significantly faster, however, the order of the results can change between calls.

```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 = FindObjectsOfType<CanvasRenderer>();
            var foundTextMeshObjects = FindObjectsOfType(typeof(TextMesh));
            Debug.Log(foundCanvasObjects + " : " + foundCanvasObjects.Length);
            Debug.Log(foundTextMeshObjects + " : " + foundTextMeshObjects.Length);
        }
    }
}
```

Additional Resources: [Object.FindObjectsByType](/engine/6000.0/script-reference/unityengine/object/findobjectsbytype.md).
