语言English
  • C#

Resources.FindObjectsOfTypeAll

声明

public static T[] FindObjectsOfTypeAll();

描述

返回类型为 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 文件夹中也是预制体的所有游戏对象。


声明

public static Object[] FindObjectsOfTypeAll(Type type);

描述

返回类型为 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; } }

使用非泛型方法查找场景中的所有游戏对象。


Did you find this page useful? Please give it a rating: