版本: Unity 6 (6000.0)
语言English
  • C#

Resources.FindObjectsOfTypeAll

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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

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