Не работает GetChild после Destroy в том же фрейме

80
20 февраля 2021, 08:50

Почему данный код не работает?

  1. MainMenu это пустой объект для группировки элементов меню.
  2. cl_menu - переменная, доступ к которой не удается получить.

    Destroy(mainMenu.transform.GetChild(0).gameObject); // Очищаем 
    Transform tem = Instantiate(mMenu); // Создаем
    tem.transform.SetParent(mainMenu.transform); // Добавляем новый объект
    cl_menu = mainMenu.transform.GetChild(0).gameObject; // Не работает
    

Если убрать первую строчку, всё работает прекрасно. Почему код выполняется не последовательно, а асинхронно?

Answer 1

Destroy срабатывает в конце фрейма:

Actual object destruction is always delayed until after the current Update loop, but will always be done before rendering.

DestroyImmediate сразу.

Хотите уничтожить, создать новый объект и сразу его использовать, попробуйте DestroyImmediate. Ну, или дождитесь окончания фрейма.

Answer 2

Через корутины с задержкой 0.1f заработало, но это костыль

READ ALSO
Как преобразовать массив в кортеж в C#?

Как преобразовать массив в кортеж в C#?

Имеется список кортежей C# следующего вида:

130
mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

mysql.connector.errors.ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Нашел интересный проект на гитхабе и захотел посмотреть код, скачал, установил зависимости, но при запуске в терминале Pycharm'a выводится такая...

186
Ограничить массив со смещением

Ограничить массив со смещением

Столкнулся с проблемойЕсть массив в виде

133
Как вывести {variables: “{”money1“:3,”money2“:3}”}

Как вывести {variables: “{”money1“:3,”money2“:3}”}

Из бд json возвращает, записанные в него переменные money1 и money2, в таком виде:

111