У меня есть сценарий GameManager
, который управляет загрузкой сцен, помещением символов в сцену, чтением информации о карте из игровых объектов и т. Д. Сценарий GameManager
установлен в DontDestroyOnLoad
.Get Children of New Scene
Я пытаюсь выяснить, как получить доступ к объектам в моей новой сцене с 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' запускается перед исходными событиями новой сцены? –