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

Resources.FindObjectsOfTypeAll

Declaration

public static T[] FindObjectsOfTypeAll();

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

T[] Список всех объектов данного типа.

Описание

Получает список всех объектов типа T.

Этот метод может вернуть любой загруженный объект Unity: GameObject, префабы, материалы, меши, текстуры. Он перечисляет и внутренние объекты, поэтому с возвращаемыми объектами следует обращаться осторожно.

В отличие от Object.FindObjectsOfType, этот метод также перечисляет отключенные объекты.

Следующий пример возвращает все GameObjects в сцене в формате List<GameObject>.

using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class ExampleScript : MonoBehaviour { List<GameObject> GetAllObjectsOnlyInScene() { List<GameObject> objectsInScene = new List<GameObject>();

foreach (GameObject go in Resources.FindObjectsOfTypeAll(typeof(GameObject)) as GameObject[]) { // EditorUtility.IsPersistent is true for objects saved to disk as assets (such as prefabs). // The leading ! keeps only in-scene objects and excludes those assets. if (!EditorUtility.IsPersistent(go.transform.root.gameObject) && !(go.hideFlags == HideFlags.NotEditable || go.hideFlags == HideFlags.HideAndDontSave)) objectsInScene.Add(go); }

return objectsInScene; } }

Следующий пример возвращает все постоянные GameObjects в сцене.

using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class ExampleScript : MonoBehaviour { List<GameObject> GetNonSceneObjects() { List<GameObject> objectsInScene = new List<GameObject>();

foreach (GameObject go in Resources.FindObjectsOfTypeAll(typeof(GameObject)) as GameObject[]) { // This is the same query as the previous example, but without the leading ! on IsPersistent. // It keeps only persistent GameObjects (assets such as prefabs) and excludes in-scene objects. if (EditorUtility.IsPersistent(go.transform.root.gameObject) && !(go.hideFlags == HideFlags.NotEditable || go.hideFlags == HideFlags.HideAndDontSave)) objectsInScene.Add(go); }

return objectsInScene; } }

Declaration

public static Object[] FindObjectsOfTypeAll(Type type);

Параметры

Параметр Описание
тип Тип объекта.

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

Object[] Возвращает любой массив загруженных объектов типа type.

Описание

Получает все объекты типа type.

Этот метод работает с необобщёнными типами и может вернуть любой загруженный объект Unity: GameObject, префабы, материалы, меши, текстуры. Он перечисляет и внутренние объекты, поэтому с возвращаемыми объектами следует обращаться осторожно.

В отличие от Object.FindObjectsOfType этот метод также перечисляет отключенные объекты.

Примечание: Этот метод очень медленный. Не используйте его в каждом кадре.

Следующий пример кода находит все GameObjects в сцене с помощью нетиповых методов:

using UnityEngine;
using UnityEditor;
using System.Collections.Generic;

public class ExampleScript : MonoBehaviour { List<UnityEngine.Object> GetSceneObjectsNonGeneric() { List<UnityEngine.Object> objectsInScene = new List<UnityEngine.Object>();

foreach (UnityEngine.Object go in Resources.FindObjectsOfTypeAll(typeof(UnityEngine.Object)) as UnityEngine.Object[]) { GameObject cGO = go as GameObject; if (cGO != null && !EditorUtility.IsPersistent(cGO.transform.root.gameObject) && !(go.hideFlags == HideFlags.NotEditable || go.hideFlags == HideFlags.HideAndDontSave)) objectsInScene.Add(go); }

return objectsInScene; } }