0


Unity获取场景中所有根物体

    每个物体都属于一个Scene,而通过Scene.GetRootGameObjects()接口就可以获得该Scene的所有根物体,我们只需要遍历所有Scene即可
List<GameObject> roots = new List<GameObject>();
for (int i = 0; i < SceneManager.sceneCount; i++)
{
    var scene = SceneManager.GetSceneAt(i);
    if (!scene.isLoaded) continue;
    
    roots.AddRange(scene.GetRootGameObjects());
}
    而被DontDestroyOnLoad处理过的物体就不再属于原来的场景了,它们被分配到一个隐藏的叫做DontDestroyOnLoad的新场景里。这个场景无法通过SceneMananger找到,但是我们可以曲线救国,准备一个已经被DontDestroyOnLoad的物体,然后通过接口GameObject.scene即可获取该场景了
foreach (var go in dontDestoryGo.scene.GetRootGameObjects())
{
    // 注意该场景里经常会有各种隐藏物体,把它们屏蔽掉
    if ((go.hideFlags & HideFlags.HideInHierarchy) == 0)
    {
        roots.Add(go);
    }
}

上面两部分结合起来,就能拿到与Hierarchy一致的所有根物体了

标签: unity 游戏引擎

本文转载自: https://blog.csdn.net/lzdidiv/article/details/127554724
版权归原作者 九德真君 所有, 如有侵权,请联系我们删除。

“Unity获取场景中所有根物体”的评论:

还没有评论