Easy Chapter Generator
EnglishEspañol

Cuatro responsabilidades y un único control del progreso

Easy Chapter Generator separa los datos ordenados de la detección en escena. ChapterManager elige el capítulo y resuelve lo que cruza escenas. Chapter controla una lista. Cada ChapterObjective guarda identidad, condiciones, acciones y estado. Un componente Objective o un script del proyecto detecta la condición concreta y envía una solicitud exacta.

Registro ordenado frente a componente de escena

AspectoObjetivo ordenadoComponente Objective
UbicaciónLista serializada del capítuloGameObject de la escena
ContenidoID, título, estado, condiciones, espera, acciones y eventosCollider, temporizador, objetos, ramas o mecánica propia
InicioSolo el Chapter lo activaNunca elige por sí mismo la posición
FinalizaciónAcepta la solicitud exacta cuando está activoLa solicita mediante Objective Link
Uso independientePuede completarse desde eventos o códigoSin registro enlazado no puede avanzar

Esta separación permite cambiar un trigger por otra mecánica sin modificar la identidad ni el orden de la progresión.

La regla lineal

En un capítulo activo solo existe una posición actual no terminal. Las anteriores están Completed o Skipped; las posteriores continúan Not Started. Si las condiciones de una fila no se cumplen, se marca Skipped y se evalúa la siguiente. Una solicitud con cualquier ID distinto al activo se rechaza.

Not StartedComprobar condicionesActiveCompleted o SkippedSiguiente

El fallo es independiente: una solicitud aceptada coloca el Chapter y el objetivo afectado en Failed, sin elegir una escena ni un reinicio.

Dónde debe vivir cada integración

Utiliza un UnityEvent cuando el sistema externo ya ofrece la señal exacta. Llama a la API del Manager o del Chapter cuando el código del proyecto toma la decisión. Hereda de Objective para crear un detector reutilizable con campos y estado temporal. Implementa adaptadores de movimiento, rutas o persistencia únicamente al sustituir esa frontera concreta.

No mantengas otro «índice de objetivo actual» en un script paralelo. Se desajustaría con objetivos omitidos, progreso restaurado, retroceso, fallo o cambios de escena. Lee siempre el estado público y conserva al Chapter como autoridad.

La responsabilidad no cambia al integrar otros sistemas

ResponsabilidadPropietarioResultado observable
Elegir el inicio y la progresión actualChapterManagerUn capítulo actual, un objetivo actual y el estado de transición
Avanzar por una secuencia delimitadaChapterSolo una posición disponible puede aceptar la finalización
Guardar condiciones, tiempos, acciones, eventos y estado finalChapterObjectiveLa fila conserva su identidad aunque cambie el detector de escena
Detectar un botón, trigger, temporizador, colocación, llegada o mecánica propiaComponente de escena o código del proyectoEnvía una solicitud exacta; no avanza la lista por su cuenta
Gestionar diálogos, inventario, cámara, entrada, movimiento, interfaz y partida completaTu proyectoLos sistemas reaccionan a la progresión sin ser sustituidos

Una carga de escena tampoco cambia este reparto. El Manager de origen escribe una transferencia de un solo uso, Unity carga la escena de destino y su Manager la valida y consume antes de considerar la selección de pruebas o el Default Chapter.

Ejemplo completo: una consola y una zona de salida

  1. 1
    El Manager selecciona chapter_lab. El Chapter evalúa la primera fila, use_console.
  2. 2
    Un ButtonObjective enlazado con use_console recibe la elección válida y solicita completar. El componente no puede elegir la fila siguiente.
  3. 3
    El Chapter acepta el ID activo exacto, ejecuta el cierre de esa fila, guarda Completed y activa reach_exit.
  4. 4
    Un TriggerObjective enlazado con reach_exit detecta la permanencia. El Chapter lo acepta, llega al final de la lista y comunica la finalización.
  5. 5
    El Manager reproduce el sonido del capítulo y aplica Completion Action. La interfaz y la cámara siguen perteneciendo al proyecto.
Puedes sustituir los detectores sin rehacer la progresión

La consola puede pasar a un diálogo y la salida a un Objective propio. Mientras ambos soliciten el mismo ID enlazado, se conservan los datos, las claves guardadas, el orden y la política final.