【发布时间】:2017-01-02 19:32:12
【问题描述】:
我有一个GameManager 脚本,它管理加载场景、将角色放入场景、从游戏对象中读取地图信息等等。 GameManager 脚本设置为 DontDestroyOnLoad。
我正试图弄清楚如何在新场景加载后从GameManager 访问我的新场景中的对象。我正在使用SceneManager.sceneLoaded 事件来运行我的“场景初始化”代码。这是事件处理程序:
void OnLevelFinishedLoading(Scene scene, LoadSceneMode mode)
{
// I want to access GameObjects within the newly loaded scene here
//
// SceneManager.GetActiveScene().GetRootGameObjects() returns
// System.ArgumentException: the scene is not loaded
// I want to do something like this
foreach (MapFeature mapFeature in rootObject.GetComponentsInChildren<MapFeature>())
{
// Do something
}
}
我想获取新场景的根级别GameObject,然后在该根对象上使用GetComponentInChildren,以便动态抓取场景中的各种组件并将它们存储在GameManager 中。但是,SceneManager.GetActiveScene().GetRootGameObjects() 返回System.ArgumentException: the scene is not loaded
如何从GameManager 中新加载的场景中获取对象?如果有比获取新场景的根对象并使用它来获取其子对象更好的方法,我会全力以赴。
【问题讨论】:
标签: unity3d