返回类型为 T
的所有对象的列表。
此函数可以返回任何已加载的 Unity 对象类型,包括游戏对象、预制体、材质、网格、纹理等。它还会列出内部对象,因此请谨慎处理返回的对象。
与 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<GameObject> 格式返回场景中的所有游戏对象。
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 文件夹中也是预制体的所有游戏对象。
返回类型为 type
的所有对象的列表。
此函数使用非泛型类型可以返回任何已加载的 Unity 对象类型,包括游戏对象、预制体、材质、网格、纹理等。它还会列出内部内容,因此请谨慎处理返回的对象。与 Object.FindObjectsOfType 不同,此函数还会列出禁用的对象。
注意:此函数非常慢,不建议每帧都使用。
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; } }
使用非泛型方法查找场景中的所有游戏对象。