Объявление
public static T[] FindObjectsOfTypeAll();Описание
Возвращает список всех объектов типа T
.
Эта функция может возвращать любой тип загруженного объекта Unity, включая игровые объекты, префабы, материалы, сетки, текстуры и т. д. Она также отображает внутренние объекты, поэтому будьте осторожны с тем, как вы обрабатываете возвращенные объекты.< /p>
В отличие от Object.FindObjectsOfType, эта функция также выводит список отключенных объектов.
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[])
{
if (!EditorUtility.IsPersistent(go.transform.root.gameObject) && !(go.hideFlags == HideFlags.NotEditable || go.hideFlags == HideFlags.HideAndDontSave))
objectsInScene.Add(go);
}
return objectsInScene;
}
}
Это вернет все игровые объекты в сцене в формате List
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[])
{
if (EditorUtility.IsPersistent(go.transform.root.gameObject) && !(go.hideFlags == HideFlags.NotEditable || go.hideFlags == HideFlags.HideAndDontSave))
objectsInScene.Add(go);
}
return objectsInScene;
}
}
Это вернет все игровые объекты в папке Resources, которые также являются префабами.
Объявление
public static Object[] FindObjectsOfTypeAll(Type type);Описание
Возвращает список всех объектов типа type
.
Эта функция, использующая неуниверсальные типы, может возвращать любой тип загруженного объекта Unity, включая игровые объекты, префабы, материалы, сетки, текстуры и т. д. возвращенные объекты. В отличие от Object.FindObjectsOfType, эта функция также выводит список отключенных объектов.
Примечание: эта функция очень медленная и не рекомендуется использовать ее каждый кадр.
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
public class ExampleScript : MonoBehaviour
{
List GetSceneObjectsNonGeneric()
{
List objectsInScene = new List();
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;
}
}
Найти все игровые объекты в сцене, используя неуниверсальные методы.