Comparação visual entre a função Start (uma vez) e Update (loop contínuo) na Unity.

Unity Start vs Update: Onde eu devo escrever meu código?

Entenda de vez a diferença entre void Start() e void Update()

Você criou um script novo. Apagou os comentários padrões da Unity e ficou encarando aquelas duas funções que já vêm escritas: void Start() e void Update().

E agora? Onde vai o código do pulo? Onde eu pego a vida do personagem?

Confundir esses dois é a receita certa para criar bugs bizarros (como inputs que falham) ou matar a performance do seu jogo sem saber o porquê.

A regra é simples, mas você precisa entender o “Quando”.

1. void Start(): Arrumando a Mochila

O Start() é o cara da preparação.

Ele roda uma única vez, exatamente no primeiro frame em que o objeto passa a existir na cena (ou quando você aperta o Play).

Pense no Start como arrumar a mochila antes de uma viagem. Você só faz isso uma vez, antes de sair de casa. Você não para a cada 2 metros na estrada para arrumar a mochila de novo.

O que colocar aqui?

  • Configurações Iniciais: Definir que a munição começa em 30.
  • Conexões (Caches): Buscar componentes (o famoso GetComponent<Rigidbody>()).
  • Referências: Achar o objeto “GameManager”.

Se é algo que só precisa acontecer no começo para o jogo saber “quem é quem”, coloque no Start.

2. void Update(): A Caminhada

O Update() é o cara da repetição.

Ele roda todos os frames. Se o seu jogo está rodando a 60 FPS (frames por segundo), o código que está aqui dentro será lido 60 vezes em um único segundo.

Pense no Update como os passos da sua viagem. Você dá um passo, depois outro, depois outro… continuamente.

O que colocar aqui?

  • Inputs: Verificar se o jogador apertou a Barra de Espaço.
  • Movimento: Mover o personagem um pouquinho para frente.
  • Timers: Contar o tempo de recarga de uma habilidade.

A Unity precisa checar “ele apertou o botão?” a todo momento. Por isso, inputs sempre vão no Update. Se você colocar um Input no Start, a Unity vai checar se você apertou o botão no milésimo de segundo que o jogo abriu. Se não apertou, já era. Ele nunca mais checa.

3. O Crime da Performance (Cuidado!)

Aqui está o erro que separa os iniciantes dos intermediários.

NUNCA coloque comandos pesados ou de busca (“Find”, “GetComponent”) dentro do Update se não for estritamente necessário.

Imagina que você quer pegar o componente de vida do inimigo.

  • No Start: “Ei Unity, pega o componente de vida ali e guarda na memória.” (Custo: 1 vez).
  • No Update: “Ei Unity, procura o componente de vida. Achou? Beleza. Próximo frame: Ei Unity, procura de novo…” (Custo: Infinito).

Fazer buscas no Update é como se você se apresentasse para o seu melhor amigo toda vez que fosse falar uma frase nova. É inútil e cansa.

Resumo da Ópera (Cheat Sheet)

  • Vai acontecer uma vez só? (Configurar vida, pegar componentes) -> Start()
  • Tem que checar toda hora? (Apertar botão, mover, girar) -> Update()
  • Seu jogo ficou lento do nada? -> Verifique se você não enfiou um loop pesado dentro do Update.
  • E o LateUpdate? Bom.. fica para o próximo post 🙂

Conclusão

Código não é mágica, é uma lista de tarefas. O segredo é saber se a tarefa é “preparar o terreno” ou “correr a maratona”.

Agora que você já sabe onde colocar o código e seu personagem já se mexe (no Update!), você vai perceber outro problema: se você duplicar esse personagem 10 vezes e quiser mudar a cor dele, vai ter que mudar 10 vezes.

Isso é um pesadelo. No próximo post, vou te apresentar a ferramenta que vai salvar horas da sua vida: os Prefabs.

Compartilhe !