私は、シーンの読み込み、シーン内の文字の挿入、ゲームオブジェクトからの地図情報の読み込みなどを管理する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
を取得したい、その後、動的シーンの中の様々な成分をつかむと、GameManager
に格納するために、そのルートオブジェクトにGetComponentInChildren
を使用しています。ただし、SceneManager.GetActiveScene().GetRootGameObjects()
はSystem.ArgumentException: the scene is not loaded
を返します。
GameManager
の中に新しく読み込まれたシーンからオブジェクトを取得するにはどうすればよいですか?新しいシーンのルートオブジェクトを取得し、それを使って子を取得するよりも優れた方法があれば、私はすべて耳にします。
感謝を。おそらく、イベントが間違った順序で実行されるように見えるので、新しいシーンの初期イベントの前に 'sceneLoaded'が起動されるでしょうか? –