получение компонента аниматора в дочернем unity

#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>();