Префаб Unity со скриптом получает в дочерних элементах другие компоненты, чем другие скрипты

В Script Foo я создаю сборный Bar, у которого есть 3 дочерних элемента. Из Script Foo я обновляю скрипт для каждого из 3 дочерних элементов Bar и устанавливаю их переменную X. При отладке я вижу, что все это происходит правильно.

Скрипт WTF прикреплен к префабу Bar. Из Script Foo я говорю Script WTF получить доступ к сценариям, прикрепленным к 3 дочерним элементам Bar, и получить то, что кажется 3 новыми классами, где переменная X никогда не устанавливается.

Я только что провел тест и обнаружил, что из Script WTF:

  • GetComponentsInChildren<TEST>() вернет массив с длиной 0, когда он должен получить 3.
  • GetChild(0).getComponent<TEST>() вернет искомый сценарий, но переменная X не задана.

Это должно быть как-то связано с клонированием, верно?


person Mark Turowetz    schedule 09.11.2014    source источник
comment
В какой функции вы вызываете GetChild(0).getComponent()? Попробуйте изменить свои коды, например, на update, где все должно быть уже создано наверняка.   -  person maZZZu    schedule 10.11.2014


Ответы (1)


Ну... я понял. Я проверял, существует ли префаб перед его созданием, поэтому я также вызывал методы в объекте до того, как он был фактически создан. Мне не приходило в голову, что загрузка префаба и создание его экземпляра — это два разных экземпляра.

person Mark Turowetz    schedule 10.11.2014
comment
Поздравляю. Убедитесь, что вы принимаете свой ответ, чтобы другие знали, что ваш вопрос решен. Кроме того, если бы вы опубликовали свой код, люди смогли бы вам помочь. - person apxcode; 10.11.2014