Menu
CoddyTech

Adicionar um componente

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

gameObject.AddComponent<T>() adiciona um novo componente do tipo T ao objeto enquanto o jogo está em execução e o retorna para que você possa configurá-lo nas linhas seguintes. Ele pertence ao GameObject, ao qual um script tem acesso por meio de gameObject. Esta fogueira ganha uma luz laranja e quente quando o jogo começa:

void Start()
{
    Light glow = gameObject.AddComponent<Light>();
    glow.color = new Color(1f, 0.5f, 0f);
    glow.intensity = 2f;
}

Um componente adicionado dessa forma permanece enquanto o jogo está em execução. Pare de “Jogar” e o objeto volta ao estado salvo na cena, sem Light. Seus próprios scripts também são componentes: gameObject.AddComponent<Spinner>() adiciona um Spinner que começa a ser executado como qualquer outro script.

A maioria dos componentes pode ser adicionada mais de uma vez, mas alguns não: um objeto pode ter no máximo um Rigidbody, e tentar adicionar um segundo gera um aviso no Console: Can't add component 'Rigidbody'. Um código que pode ser executado mais de uma vez verifica se o objeto já tem o componente antes de adicioná-lo.

challenge icon

Desafio

Médio

A barra de espaço sacode a palmeira, e o coco cai.

  1. Em Update(), ao pressionar Input.GetKeyDown(KeyCode.Space), adicione um Rigidbody com gameObject.AddComponent<Rigidbody>().
  2. Adicione-o somente quando o coco ainda não tiver um: !TryGetComponent(out Rigidbody rb). Uma segunda pressionada da barra de espaço não adiciona um segundo Rigidbody.

Pressione “Jogar” e pressione a barra de espaço: o coco cai na areia. Em seguida, clique em “Verificar”.

Experimente você mesmo

using UnityEngine;

public class CoconutDrop : MonoBehaviour
{
    void Update()
    {
        // Space: adicione um Rigidbody se o coco ainda não tiver um
    }
}

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

Pratique por conta própria: Playground de Unity