Menu
CoddyTech

Obter um componente

Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 44 de 85.

Um GameObject é um contêiner de componentes: um Transform, um MeshRenderer que o desenha, um collider, seus scripts. GetComponent<Renderer>() retorna o componente desse tipo no mesmo objeto e, por meio dele, seu script altera o que esse componente faz. transform é um atalho pronto para o Transform; todos os outros componentes você busca por conta própria.

Este cubo fica vermelho quando a tecla Espaço é pressionada. Ele busca seu Renderer uma vez, em Start(), e o mantém em um campo: GetComponent pesquisa os componentes do objeto sempre que é chamado, e o resultado não muda.

Renderer rend;

void Start()
{
    rend = GetComponent<Renderer>();
}

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        rend.material.color = Color.red;
    }
}

rend.material dá a este objeto sua própria cópia do material na primeira vez que você o usa, então outros objetos que compartilhavam o material mantêm a cor deles. A Unity nomeia algumas cores para você, como Color.red, Color.green, Color.blue, Color.yellow e Color.gray; new Color(r, g, b) cria qualquer outra, com cada parte variando de 0 a 1.

challenge icon

Desafio

Médio

Cada clique acende a luz do sinal na sequência: vermelho, amarelo, verde e, depois, vermelho novamente.

  1. Adicione um campo Renderer rend; e defina seu valor em Start() com GetComponent<Renderer>().
  2. Em Input.GetMouseButtonDown(0), some 1 a um campo int step e redefina-o para 0 quando chegar a 3.
  3. Defina rend.material.color como Color.red, Color.yellow ou Color.green para os valores de step 0, 1 ou 2.

Pressione “Jogar” e clique no jogo: a luz muda de cor. Em seguida, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;

public class SignalLight : MonoBehaviour
{

    void Start()
    {
    }

    void Update()
    {
        // A cada clique: vermelho, depois amarelo, depois verde e, por fim, vermelho novamente
    }
}

Todas as lições de Fundamentos de Scripting no Unity

Pratique por conta própria: Playground de Unity