🎮 UnityDocs

Timeline: cinemáticas y escenas guionizadas

La herramienta para coreografiar el tiempo: mueve cámaras, personajes, audio y activa objetos en pistas sincronizadas para crear cinemáticas, intros, cutscenes y eventos guionizados sin llenar el código de corrutinas.

📄 ArtículoIntermedio✅ RevisadoUnity 6.0 LTSActualizado 2026-07-15
DificultadConceptual Código Matemáticas
Tiempo📖 Lectura 8 min · ⌨️ Práctica 30 min

Coreografiar el tiempo#

Cuando necesitas que varias cosas pasen en orden —la cámara se mueve, un personaje camina, suena música, aparece un texto— hacerlo con corrutinas y temporizadores se vuelve un infierno de sincronización. Timeline es un editor visual donde colocas todo en pistas a lo largo de una línea de tiempo, como un editor de vídeo. Es la herramienta de cinemáticas, intros y momentos guionizados.

Montar una Timeline#

  1. Crea un objeto vacío (será el "director" de la escena), selecciónalo.
  2. Abre Window → Sequencing → Timeline y pulsa Create. Se genera un asset Timeline y un componente Playable Director en el objeto.
  3. Añade pistas con el botón +, una por cada cosa que quieras controlar.

Tipos de pista#

PistaControla
Animation TrackLa animación de un objeto (reutiliza clips o graba dentro)
Cinemachine TrackLos cambios y mezclas entre cámaras virtuales
Audio TrackMúsica y efectos, sincronizados al frame
Activation TrackEnciende/apaga un objeto durante un tramo
Signal TrackDispara eventos hacia tu código en un instante
Control TrackReproduce otras Timelines o sistemas de partículas

Arrastras los objetos a sus pistas y colocas los clips en la posición temporal que quieras. Todo se reproduce coordinado.

Cinemachine + Timeline = cine

La combinación estrella para cinemáticas: una Cinemachine Track te deja poner varias cámaras virtuales y fundir entre ellas a lo largo del tiempo (un plano general, corte a primer plano, travelling...). Es como dirigir con cortes de cámara profesionales, sin programar nada.

Disparar código: las Signals#

Una cinemática casi siempre necesita "avisar" al juego: al terminar la intro, dar el control al jugador; a mitad, otorgar un objeto. Eso se hace con Signals:

  1. Añade una Signal Track y coloca un marcador Signal Emitter en el instante deseado.
  2. En el objeto, un Signal Receiver conecta esa señal con un método (como un evento de UI):
C#
using UnityEngine;

public class FinCinematica : MonoBehaviour
{
    // La conectas al Signal Receiver en el instante que quieras
    public void DarControlAlJugador()
    {
        // activar el input del jugador, cambiar de estado de juego, etc.
        Debug.Log("Cinemática terminada");
    }
}

Así el código y la cinemática quedan sincronizados sin adivinar tiempos.

Reproducirla desde el juego#

Por defecto una Timeline con Play On Awake arranca sola. Para lanzarla cuando tú quieras (al entrar en una sala, al pulsar un botón):

C#
using UnityEngine;
using UnityEngine.Playables;

public class LanzarCinematica : MonoBehaviour
{
    [SerializeField] private PlayableDirector director;

    public void Reproducir() => director.Play();
}
Timeline es para lo guionizado, no para el gameplay

Timeline brilla en secuencias predefinidas (cinemáticas, intros, scripted events). No es para la lógica dinámica del juego (que reacciona al jugador en tiempo real): eso son scripts, máquinas de estados y físicas. Usa cada herramienta para lo suyo.

Errores frecuentes#

  • Usar Timeline para lógica de gameplay dinámica (usa scripts).
  • Sincronizar el fin de la cinemática con un WaitForSeconds en vez de una Signal.
  • Olvidar quitar el control al jugador durante la cinemática (y que se mueva "por debajo").
  • No usar Cinemachine para los cortes de cámara y acabar animando la cámara a mano.
  • Dejar Play On Awake activo cuando querías lanzarla por código.

Ponte a prueba#

📝 Pon a prueba lo aprendido

Resumen#

Timeline coreografía secuencias guionizadas en pistas sincronizadas (Animation, Cinemachine, Audio, Activation, Signal, Control): montas cinemáticas e intros como en un editor de vídeo. Combínala con Cinemachine para los cortes de cámara y con Signals para disparar tu código en el instante justo. Se lanza con el Playable Director (director.Play()). Úsala para lo predefinido, no para el gameplay dinámico. Los clips los creas con la Animation window.

Fuentes y para profundizar