#unity3d
Вопрос:
У меня есть родитель и ребенок, использующие аниматора. Аниматор в child отключен, и я хочу включить его с помощью кода.
=> родитель.
=>=>> ребенок
Я хочу, чтобы компонент аниматора работал на ребенке с помощью этого кода, но он не работает.
Anim childAnim;
childAnim = parent.GetComponentInChildren<Animator>();
childAnim.enabled = true;
Что я сделал не так?
Комментарии:
1. проверьте, что
child
это не то же самое, чтоchildAnim
. Убедитесь, что тот, который вы получаете, — это тот, который вы включаете
Ответ №1:
GetComponentInChildren возвращает компонент типа в игровом объекте или любом из его дочерних элементов с помощью первого поиска по глубине. Я в вашем случае возвращаю компонент аниматора, прикрепленный к вашему родителю. Вы можете использовать следующий код
Animator[] childAnim;
childAnim = parent.GetComponentsInChildren<Animator>();
childAnim[1].enabled = true;
Это не лучшая практика, но она будет работать. GetComponentsInChildren возвращает все компоненты в дочерних элементах, и если их несколько, индекс может отличаться. Вы должны сохранить ссылку на дочерний объект, для которого требуется компонент аниматора.
Ответ №2:
Animator childAnim;
childAnim = parent.GetComponentInChildren<Animator>();
childAnim.enabled = true;
GetComponentInChildren() возвращает компонент Аниматора первого ребенка (если он есть), если в первом ребенке нет компонента аниматора, то вы получите сообщение об ошибке.
Воспользуйся parent.find("nameofchild").GetComponent<Animator>();