版本:Unity 6 (6000.0)
语言英语
  • C#

Object.FindObjectsByType

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有提交,但我们确实会阅读用户提出的每项更改建议,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

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

声明

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

声明

public static T[] FindObjectsByType(FindObjectsSortMode sortMode);

声明

public static T[] FindObjectsByType(FindObjectsInactive findObjectsInactive, FindObjectsSortMode sortMode);

参数

type 要查找的对象类型。
findObjectsInactive 是否包含附加到非活动 GameObjects 的组件。如果您未指定此参数,则此函数不会在结果中包含非活动对象。
sortMode 是否以及如何对返回的数组进行排序。不排序数组会使此函数运行速度显著加快。

返回值

Object[] 找到的与指定类型匹配的对象数组。

描述

检索 Type type 的所有已加载对象的列表。

这不会返回资源(例如网格、纹理或预制体)。它也不会返回设置了 HideFlags.DontSave 的对象。使用 Resources.FindObjectsOfTypeAll 来避免这些限制。

在编辑器中,此功能默认搜索场景视图。如果您想在预制体阶段查找对象,请参阅 StageUtility API。

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>(FindObjectsSortMode.None); var foundTextMeshObjects = FindObjectsByType(typeof(TextMesh), FindObjectsSortMode.None); Debug.Log(foundCanvasObjects + " : " + foundCanvasObjects.Length); Debug.Log(foundTextMeshObjects + " : " + foundTextMeshObjects.Length); } } }