我有一个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
中新加载的场景中获取对象?如果有一种比获取新场景的根对象更好的方法并使用它来获取它的子项,我就会全神贯注。
感谢。看起来也许事件是以错误的顺序被解雇的,所以'sceneLoaded'在新场景的初始事件之前被触发? –