Version: 2020.1
LanguageEnglish
  • C#

Object.FindObjectsOfType

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Switch to Manual
public static Object[] FindObjectsOfType(Type type);
public static Object[] FindObjectsOfType(Type type, bool includeInactive);
public static T[] FindObjectsOfType(bool includeInactive);
public static T[] FindObjectsOfType();

Parameters

type The type of object to find.
includeInactive If true, components attached to inactive GameObjects are also included.

Returns

Object[] The array of objects found matching the type specified.

Description

Gets a list of all loaded objects of Type type.

This does not return assets (such as meshes, textures or prefabs), or objects with HideFlags.DontSave set. Objects attached to inactive GameObjects are only included if inactiveObjects is set to true. Use Resources.FindObjectsOfTypeAll 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 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.

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); } } }
对文档有任何疑问,请移步至开发者社区提问,我们将尽快为您解答