首页 > 解决方案 > 枚举舞台上的所有对象 - 统一

问题描述

我没有在团结方面做一场伟大的比赛。我想做一个保存功能。它将起作用,以便当您单击按钮时,将记录统一的每个对象,以及它的位置脚本等。但我不明白如何整理舞台上的所有物品,希望在座的人能帮助我。文字可能有错误,我用谷歌翻译。

标签: c#unity3d

解决方案


您可以通过以下方式获取场景中的所有对象并遍历它们以找到所需的数据:

    //GameObject[] allGameObjects = FindObjectsOfType<GameObject>(); // Ignore this as per derHugo's comment, use the line below
    GameObject[] allGameObjects = SceneManager.GetActiveScene().GetRootGameObjects();

    foreach (GameObject go in allGameObjects)
    {
        Debug.Log("Name: " + go.name);
        Component[] components = go.GetComponents<Component>();
        foreach (Component comp in components)
        {
            Debug.Log("Component: " + comp.GetType());
        }
    }

编辑: 正如 derHugo 在对此答案的评论中指出的那样,使用 FindObjectsOfType 只会返回活动的游戏对象,所以我修改了答案。您还需要添加using UnityEngine.SceneManagement; 如果要将对象保存在其他场景中,您可以使用SceneManager 类的其他方法和属性按名称或索引定位它们


推荐阅读