Unity 遍历场景所有物体(包括隐藏及被禁用的物体)
时间: 2023-11-22 17:53:08 浏览: 186
可以使用Unity的场景遍历方法来遍历场景中的所有对象,包括隐藏及被禁用的物体。以下是示例代码:
```csharp
using UnityEngine;
using UnityEditor;
public class SceneObjectTraverser : EditorWindow
{
[MenuItem("Tools/Scene Object Traverser")]
static void Init()
{
SceneObjectTraverser window = (SceneObjectTraverser)EditorWindow.GetWindow(typeof(SceneObjectTraverser));
window.Show();
}
void OnGUI()
{
if (GUILayout.Button("Traverse Scene Objects"))
{
TraverseSceneObjects();
}
}
void TraverseSceneObjects()
{
GameObject[] allObjects = (GameObject[])FindObjectsOfType(typeof(GameObject));
foreach (GameObject obj in allObjects)
{
// Do something with the object here.
Debug.Log("Found object: " + obj.name);
}
}
}
```
这个脚本创建了一个自定义窗口,并为该窗口添加了一个按钮。当单击该按钮时,`TraverseSceneObjects`方法将遍历场景中的所有对象,并对每个对象执行一些操作(在这个例子中,只是简单地将其名称记录到调试日志中)。
请注意,这个方法只能在Unity编辑器中使用,而不能在运行时使用。如果需要在运行时遍历场景中的所有对象,请使用`FindObjectsOfType`方法。
阅读全文