У меня есть две сцены в единстве.Первый - для импорта данных из двоичного файла, а после импорта файла я создаю игровой объект с координатами, которые я прочитал из двоичного файла.Я использую DontDestroyOnLoad
для этого игрового объекта.
Затем я загружаю вторую сцену, используя AsyncOperation , и нахожу свой объект, используя GameObject.Find
.Это прекрасно работает, и я могу найти объект и сделать мои операции.Однако во второй сцене у меня есть кнопка сброса, с помощью которой я перезагружаю ту же сцену, используя AsyncOperation
.Когда сцена перезагружается GameObject.Find
не могу найти мой объект.Кстати, это происходит только в сборке Android.В редакторе он находит объект, в котором нет проблем.
Вот так я перезагружаю сцену, моя функция ResetScene
вызывается при нажатии кнопки.
void ResetScene()
{
StartCoroutine(LoadAsyncScene());
}
IEnumerator LoadAsyncScene()
{
AsyncOperation asyncLoad = SceneManager.LoadSceneAsync("ARSession");
while (!asyncLoad.isDone)
{
yield return null;
}
}
У кого-нибудь есть идеи?почему возникает эта проблема или у кого-то есть лучшая идея для поиска объекта?Поскольку я создаю объект во время выполнения, я чувствую, что у меня нет другого выбора, кроме GameObject.Find
.Любая помощь будет оценена.Спасибо!
Примечание: Я пытался найти объект в Start
и OnLevelWasLoaded
.Оба они не работали.
Я зарегистрировал каждый игровой объект в иерархии, используя это:
foreach (GameObject obj in Object.FindObjectsOfType(typeof(GameObject)))
{
Debug.Log(obj.name);
}
При начальной загрузке my созданный мной игровой объект регистрируется, но после перезагрузки сцены мойобъект не загружен.
Я действительно нашел источник проблемы.Я менял родителя моего объекта с null
на другой объект, и, очевидно, это вызывает проблему.Тем не менее, я не знаю, как это исправить, потому что я должен изменить родителя, я не могу изменить эту логику.