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