GetComponent()
·Quando precisamos que um script interaja com outros componentes em nossos objetos, vimos que é possível referenciá-los declarando uma variável pública e arrastando o componente no editor. Porém nem sempre é possível fazer isso; por exemplo, como você referenciaria o RigidBody2D de um objeto que foi instanciado depois de apertar play?
Para fazer isso, utilizamos a função GetComponent(). Dada uma referência ao GameObject do qual queremos pegar um componente, podemos usar:
RigidBody2D otherRigidBody;
void Start()
{
otherRigidBody = otherGameObject.GetComponent<RigidBody2D>();
}
Existem várias formas de conseguir a referência ao GameObject, algumas são:
otherGameObject = GameObject.Find("nome objeto");
// encontra um objeto a partir do nome
childGameObject = GameObject.Find("nome pai/nome filho");
// encontra um objeto dentro de uma hierarquia
taggedObject = GameObject.FindWithTag("nome tag");
// encontra um objeto com uma determinada tag
firstChild = Parent.transform.GetChild(0).gameObject;
// Pega o primeiro filho de um objeto conhecido (travessia pela hierarquia geralmente é feita pelo Transform, não GameObject)
Como todos os objetos em Unity possuem GameObject e Transform, estes podem ser adquiridos usando “.transform” ou “.gameObject” a partir de qualquer componente