Unity 6.3
0 онлайн 62 гостей 3 в системе
Вход

Object.FindObjectsByType

Declaration

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);

Параметры

Параметр Описание
тип Тип объекта для поиска. Должен быть типом ссылки, полученным из UnityEngine.Object.
findObjectsInactive Включать ли компоненты, прикрепленные к неактивному объекту GameObjects. Если этот параметр не указан, функция не включает неактивные объекты в результаты.
sortMode Сортировать ли и как сортировать возвращаемый массив. Несортирование экономит время, что может быть значительным, если поиск возвращает много объектов.

Возвращаемое значение

Object[] Массив найденных объектов, соответствующих указанному типу.

Описание

Получает список всех загруженных объектов типа type.

FindObjectsByType не возвращает Assets (например, меши, текстуры или префабы). Также не возвращает объекты, которые имеют HideFlags.DontSave set.Use Resources.FindObjectsOfTypeAll чтобы избежать этих ограничений.

Вы не можете использовать Object.FindObjectsByType напрямую с интерфейсами. Вместо этого найдите все компоненты базового типа, а затем отфильтруйте результаты по интерфейсу с помощью OfType.

В редакторе, FindObjectsByType по умолчанию ищет в представлении Scene. Если вы хотите найти объект в стадии Префаб, используйте StageUtility APIs.

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); } } }

Дополнительные ресурсы: ,Object.FindFirstObjectByType,, ,Object.FindAnyObjectByType,.