Composição sobre herança: um GameObject é a soma dos seus Components

Unity Essencial

Um checklist dos fundamentos do Unity: a arquitetura GameObject/Component, o ciclo de vida do MonoBehaviour, prefabs, física, UI e build. Cada tópico em poucas linhas, com as armadilhas. Se algo soar novo, o ponteiro → aprofunde em… indica a apostila completa.

10 seções + recapMonoBehaviour · prefabs · físicaURP · Profiler · buildsauto-checagem por seçãocross-references
COMO USAR

O formato "Essencial"

Densa, sem rodeios, feita para ser varrida.

01

Conceitos: GameObject + Component

Tudo na cena é um GameObject; o que ele faz vem dos Components. → aprofunde em Unity

ConceitoO mínimo
GameObjectcontêiner vazio com um Transform; ganha comportamento adicionando Components (Renderer, Collider, scripts…)
Componentpeça reutilizável de dados+lógica anexada a um GameObject. Composição > herança
Sceneum "nível"/tela; contém a hierarquia de GameObjects. Salve sempre (Ctrl+S)
Prefabum GameObject salvo como asset reutilizável (inimigo, bala, botão) — editar o prefab atualiza todas as cópias
Assetarquivo em Assets/ (modelo, textura, áudio, script, material, prefab)
Inspectoredita os Components do objeto selecionado; campos [SerializeField] aparecem aqui
⚠️ Duas armadilhas de iniciante
  • Mudanças em Play Mode são descartadas ao sair. Ajuste valores fora do Play, ou anote e reaplique. (Dá para pintar o Play Mode de outra cor em Preferences.)
  • Versione os arquivos .meta. Cada asset tem um .meta com seu GUID; sem ele, referências quebram para o time. Use o .gitignore de Unity (ignora Library/, Temp/, Logs/) + Git LFS para binários.
✔️ Auto-checagem

O que distingue GameObject de Component? O que é um Prefab e o que acontece ao editá-lo? Por que mudanças em Play Mode somem? O que versionar (e o que ignorar) em Git?

02

Transform e navegação da cena

Position/Rotation/Scale, local vs world, e mexer na Scene View. → aprofunde em Unity

Q  pan (hand)   W  mover   E  girar   R  escalar   T  rect   Y  transform combinado
F               enquadrar o objeto selecionado
RMB + WASD/QE   voar pela cena (Shift acelera)     |    Alt+LMB  orbitar    |    scroll  zoom
Ctrl (arraste)  snap por incremento     |     V     vertex snap
✔️ Auto-checagem

Atalhos W/E/R e como voar pela cena. position vs localPosition. O que o toggle Pivot/Center muda? Quanto vale 1 unidade Unity?

03

Componentes centrais

Os que você usa em quase todo objeto. → aprofunde em Unity

ComponentPara
Mesh Filter + Mesh Renderera geometria + como ela é desenhada (materiais, sombras, light probes)
Collider (Box/Sphere/Capsule/Mesh)forma para colisão. Is Trigger = detecta sobreposição sem empurrar
Rigidbodycoloca o objeto sob a física (gravidade, forças). Sem ele, não há resposta física de verdade
Camerao que é renderizado; projection (perspective/ortho), clipping planes, culling mask
LightDirectional (sol), Point, Spot, Area (baked); modo Realtime/Baked/Mixed
AudioSource / AudioListeneremite som (2D/3D, spatial blend) / "ouve" (um só, geralmente na câmera)
Canvasraiz de toda UI (ver seção 07)
✔️ Auto-checagem

Qual a diferença entre um Collider comum e um com Is Trigger? O que um Rigidbody adiciona? Para que serve o AudioListener e quantos deve haver?

04

Scripting: MonoBehaviour

Um script que herda de MonoBehaviour é um Component. O ciclo de vida é o núcleo. → aprofunde em Unity · C#

Awake()        1x, ao criar o objeto — inicialize referências próprias
OnEnable()     toda vez que o componente é ativado
Start()        1x, antes do 1º Update — use para acessar OUTROS objetos (já passaram por Awake)
Update()       todo frame — input, lógica de jogo (multiplique por Time.deltaTime!)
FixedUpdate()  passo fixo — TODA física / Rigidbody (AddForce, velocity)
LateUpdate()   depois de todos os Update — câmera seguindo o player
OnDestroy()    ao destruir — limpe eventos, timers
public class Mover : MonoBehaviour {
    [SerializeField] float speed = 5f;   // privado, mas editável no Inspector
    Rigidbody rb;

    void Awake() { rb = GetComponent<Rigidbody>(); }   // cache: NÃO chame em Update

    void Update() {
        float h = Input.GetAxis("Horizontal");
        transform.Translate(Vector3.right * h * speed * Time.deltaTime);
    }
}
✔️ Auto-checagem

Ordem e propósito de Awake / Start / Update / FixedUpdate / LateUpdate. Por que física vai em FixedUpdate? Por que multiplicar por Time.deltaTime? Por que cachear GetComponent? [SerializeField] vs public.

05

Prefabs e instanciação

A unidade de reúso. → aprofunde em Unity

[SerializeField] GameObject bulletPrefab;
[SerializeField] Transform muzzle;

void Fire() {
    Instantiate(bulletPrefab, muzzle.position, muzzle.rotation);
}
✔️ Auto-checagem

Como criar um prefab? O que "Apply Override" faz? O que é um Prefab Variant? Por que preferir object pooling a Instantiate/Destroy para balas?

06

Física e colisões

Regras que confundem todo mundo no começo. → aprofunde em Unity

✔️ Auto-checagem

Por que uma colisão não dispara nada? OnCollisionEnter vs OnTriggerEnter. Onde mover um Rigidbody? O que a Collision Matrix controla? Como checar "está no chão"?

07

UI

Canvas + RectTransform + âncoras. → aprofunde em Unity

✔️ Auto-checagem

Os três render modes do Canvas. O que âncora e pivot fazem no RectTransform? Para que serve o Canvas Scaler + Reference Resolution? O que acontece se faltar o EventSystem?

08

Assets e render pipeline

Escolha a pipeline cedo; import settings importam. → aprofunde em Unity · Computação Gráfica & Three.js

✔️ Auto-checagem

URP vs HDRP vs Built-in — qual escolher e por que decidir cedo? O que import settings afetam? Realtime vs Baked vs Mixed lighting. O que Light Probes resolvem? Para que serve a flag Static?

09

Build e otimização

Medir antes de otimizar; o Profiler é o juiz. → aprofunde em Unity

✔️ Auto-checagem

O que precisa estar na lista Scenes in Build? Qual ferramenta usar antes de otimizar? Três formas de reduzir draw calls. Por que evitar alocações em Update? Addressables vs Resources/.

10

O resto do essencial

Itens que aparecem sempre.

TópicoO mínimo
Input System (novo)Input Actions asset + callbacks; substitui Input.GetAxis (antigo). Suporta rebinding, multi-device. Escolha um dos dois no início
ScriptableObjectasset de dados puro (config, tabelas, eventos) — desacopla dados de cena; menos singletons
Tags & LayersTag = identificar ("Player"); Layer = física/render/culling. Não abuse de CompareTag em loops quentes
GizmosOnDrawGizmos() desenha ajudas visuais no editor (raios, ranges) — ótimo para depurar
ConsoleDebug.Log/Warning/Error; "Clear on Play", "Error Pause", "Collapse". Clique no log salta para a linha
Assembly Definitions(.asmdef) dividem o código em módulos → compilação mais rápida, dependências explícitas — noção
Package ManagerWindow > Package Manager: pacotes oficiais (Cinemachine, TextMeshPro, Input System, URP) e do registro
Version control.gitignore de Unity (ignora Library/, Temp/, Logs/, Build/); Git LFS p/ binários; force text serialization (já é o padrão); versione .meta
Cinemachinecâmeras "inteligentes" (follow, look-at, blends) sem escrever código de câmera — pacote
✔️ Auto-checagem

Input System novo vs antigo. Para que serve um ScriptableObject? Tag vs Layer. O que OnDrawGizmos faz? O que ignorar no .gitignore de Unity?

RECAP

Checklist final do Unity

Se você marca todos, tem o básico operacional. Onde travar, volte à seção.

✅ Eu sei…
  • a arquitetura GameObject + Component (composição sobre herança) e o que é uma Scene
  • o que é um Prefab, editar em Prefab Mode, Overrides Apply/Revert, Variants
  • que mudanças em Play Mode são descartadas
  • versionar .meta, ignorar Library//Temp/, usar Git LFS
  • navegar a Scene View (Q/W/E/R, F, RMB+WASD) e local vs world (position vs localPosition)
  • 1 unidade = 1 metro; casar escala com modelos importados
  • componentes centrais: Mesh Renderer, Collider (+ Is Trigger), Rigidbody, Camera, Light, AudioSource/Listener, Canvas
  • o ciclo de vida do MonoBehaviour: Awake → OnEnable → Start → Update / FixedUpdate / LateUpdate → OnDestroy
  • física em FixedUpdate; multiplicar movimento por Time.deltaTime em Update
  • cachear GetComponent; usar [SerializeField] private; noção de Coroutines e UnityEvent
  • colisão precisa de Rigidbody; OnCollisionEnter vs OnTriggerEnter; Layers & Collision Matrix; Raycast; 2D é separado
  • Instantiate/Destroy e por que preferir object pooling para objetos frequentes
  • UI: Canvas render modes, RectTransform (âncora/pivot), Canvas Scaler + Reference Resolution, EventSystem
  • escolher a render pipeline (URP por padrão) cedo; import settings; lighting Realtime/Baked/Mixed + Light Probes; flag Static
  • Build Settings (Scenes in Build), o Profiler, reduzir draw calls (batching/SRP Batcher/instancing), evitar alocações em Update
  • Input System (novo vs antigo), ScriptableObject, Tags & Layers, Gizmos, Package Manager, .gitignore de Unity

Aprofundamento: Unity (completa) · C# · Blender 3D · Computação Gráfica & Three.js.