C# para Unity · Sección 3

Ciclo de vida y tiempo en Unity

Awake, Start, Update, FixedUpdate, LateUpdate, activación, colisiones, triggers, tareas diferidas y corrutinas organizadas por responsabilidad.

3
lecciones
3
ejercicios resueltos
CONTENIDO ORIGINAL

Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.

ANTES DE EMPEZAR

Ubícate antes de avanzar

01 / PUNTO DE PARTIDA

Conviene haber comprendido Fundamentos de C# para gameplay.

02 / META OBSERVABLE

Al terminar deberías poder relacionar Inicialización y activación con Frames, física y colisiones y resolver un caso nuevo.

03 / TIEMPO SUGERIDO

Reserva entre 35 y 55 minutos para lectura, ejemplos, tres comprobaciones y cierre.

04 / PREPARA EL LABORATORIO

Instala Unity Hub, una versión LTS compatible y un IDE con integración para C#. Conserva un proyecto de laboratorio separado.

Abrir la guía de herramientas →
Diagnóstico rápido: ¿cómo se relacionan Inicialización y activación y Frames, física y colisiones? +

No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.

Ruta guiada · 3 lecciones

Aprende el tema paso a paso

Organizarás inicialización, actualización, física, activación y tareas temporales según el momento exacto en que Unity las ejecuta.

Al terminar podrás
  • Awake prepara el componente y OnEnable abre su participación
  • Update, FixedUpdate y LateUpdate responden a relojes distintos
  • Corrutinas coordinan frames; no crean un hilo nuevo
01
Inicializar y activar

Awake prepara el componente y OnEnable abre su participación

Awake prepara referencias y estado propio. Start ocurre antes del primer frame habilitado. OnEnable y OnDisable forman una pareja natural para registrar y retirar eventos; OnDestroy reserva la limpieza definitiva.

01

No supongas un orden entre objetos sin diseñarlo.

02

Suscribir y retirar en callbacks simétricos evita duplicados.

03

Desactivar no equivale a destruir.

Comprueba lo aprendido · 01

¿Qué síntoma produce suscribirse cada vez que un panel se activa y nunca retirarse?

Mostrar respuesta +

El mismo evento puede ejecutar el callback varias veces y conservar referencias innecesarias, generando actualizaciones duplicadas y fallos difíciles de reproducir.

02
Mover y colisionar

Update, FixedUpdate y LateUpdate responden a relojes distintos

Update o los callbacks del paquete Input System sirven para capturar intención; FixedUpdate para fuerzas y cambios de Rigidbody; LateUpdate para tareas posteriores como una cámara. deltaTime convierte una velocidad por segundo en desplazamiento por frame. Collider, Rigidbody, capas y modo Trigger determinan los callbacks de contacto.

01

Declara si el proyecto usa Input Manager clásico o Input System y aísla esa lectura del movimiento.

02

Aplica fuerzas en FixedUpdate y no multipliques Force por deltaTime sin motivo.

03

No mezcles callbacks 2D y 3D.

Comprueba lo aprendido · 02

¿Un Trigger atraviesa todo sin emitir mensajes?

Mostrar respuesta +

No necesariamente. Un trigger no resuelve el contacto como obstáculo sólido, pero puede emitir OnTriggerEnter, Stay y Exit cuando la configuración de colliders, rigidbodies y capas lo permite.

03
Distribuir en el tiempo

Corrutinas coordinan frames; no crean un hilo nuevo

Una corrutina usa IEnumerator y yield para pausar y continuar una secuencia. Invoke puede servir para una llamada sencilla, pero una corrutina o temporizador explícito hace visible la cancelación y el estado en flujos complejos. OnBecameVisible depende de cámaras de render y no prueba por sí solo lo que ve la persona.

01

Conserva una referencia si necesitas detener una corrutina concreta.

02

Al cancelar, deja la UI y el estado en una condición coherente.

03

Decide si el tiempo debe obedecer o ignorar timeScale.

Comprueba lo aprendido · 03

¿Cuándo usarías WaitForSecondsRealtime en vez de WaitForSeconds?

Mostrar respuesta +

Cuando la espera debe continuar aunque timeScale sea cero, por ejemplo en ciertos menús o tiempos de interfaz durante una pausa.

Resumen de la sección

Tu recorrido en tres ideas

  1. Awake prepara el componente y OnEnable abre su participación
  2. Update, FixedUpdate y LateUpdate responden a relojes distintos
  3. Corrutinas coordinan frames; no crean un hilo nuevo
PROFUNDIZACIÓN / LABORATORIO GUIADO

Traza el ciclo de un controlador estable

Conecta entrada, tiempo por frame, física, cámara, activación y cancelación en un solo flujo observable.

CASO

Un jugador se mueve a distinta velocidad según los FPS, la cámara vibra y una cuenta regresiva continúa después de cerrar el panel.

Procedimiento

  1. Registra el orden y frecuencia de Update, FixedUpdate, LateUpdate, OnEnable y OnDisable.
  2. Separa captura, física, cámara y corrutina; añade cancelación simétrica.
  3. Prueba a 30 y 120 FPS, cambia fixedDeltaTime y activa el panel cinco veces.

Evidencia mínima

  • Cronología de callbacks y responsabilidad asignada.
  • Distancia recorrida por segundo bajo dos FPS.
  • Una sola suscripción y cero corrutinas residuales.
Mostrar razonamiento modelo +

Update conserva la entrada más reciente; FixedUpdate actúa sobre Rigidbody; LateUpdate sigue el resultado; OnEnable inicia participación y OnDisable la cierra. La comprobación compara magnitudes por segundo, no cantidad de llamadas.

Para ir más lejos

¿Qué cambiaría si el juego pudiera pausar con timeScale = 0?

CIERRE DE LA SECCIÓN

Comprueba que puedes usarlo

Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.

ERROR 01

Mover un Rigidbody desde Update o leer entrada exclusivamente en FixedUpdate.

ERROR 02

Suscribirse al activar y no retirarse al desactivar, acumulando callbacks.

DESAFÍO INTEGRADOR

Ahora hazlo sin guía

Construye un objeto con entrada, movimiento físico, cámara posterior y una cuenta regresiva cancelable; dibuja el orden de sus callbacks.

Mostrar pauta de corrección +
Una respuesta sólida:
  • Cada responsabilidad vive en el callback adecuado.
  • La velocidad por frame y la física usan el tiempo con criterio.
  • Activar, desactivar y reactivar no duplica eventos ni deja corrutinas incoherentes.