Unity GetComponent‹Type› возвращает значение

Какой игровой объект типа Type возвращается из вызова

GetComponent<Type>();

если к вызывающему игровому объекту прикреплено более одного объекта этого типа?

В документации к этой функции сказано, что игровой объект возвращается только в том случае, если он существует, иначе null.

У меня есть игровой объект с несколькими Collider2D, и я хочу знать, какой из них будет возвращен и согласован ли он.


person waylonion    schedule 26.07.2018    source источник


Ответы (1)


Если прикреплено более одного компонента, соответствующего указанному типу, Unity вернет первый компонент. Однако не полагайтесь на это, так как вы не можете контролировать, кто из них «первый». Это будет детерминировано, но может неожиданно измениться из-за того, как Unity поддерживает, сериализует и хранит данные внутри.

Вот почему обычно не рекомендуется иметь более одного компонента одного типа (например, коллайдеры), прикрепленного к одному и тому же игровому объекту. Если вам нужно больше одного, используйте детей.

person Draco18s no longer trusts SE    schedule 26.07.2018
comment
Я думаю, что OP это знает, но вопрос в том, существуют ли два объекта, которые реализуют T, какой из них возвращается? - person DavidG; 26.07.2018
comment
Спасибо за ответ! Как было предложено, я смог реструктурировать свой игровой объект и использовать дочерний игровой объект, чтобы избежать нескольких компонентов одного типа! - person waylonion; 27.07.2018