Ejecución
Eventos y orden de ejecución
Conecta UnityEvents y eventos tipados de C# en la transición documentada sin volver a emitir notificaciones históricas.
Notificaciones del Manager
| Evento | Momento exacto | No significa |
|---|---|---|
| OnManagerReady | Tras restaurar y probar la selección inicial | No garantiza que exista un Chapter válido |
| OnBeforeSceneLoad | Después de activar IsTransitioning y antes de guardar/cargar | No es una espera asíncrona |
| ChapterFailed | Con los estados de fallo ya definitivos | No reinicia, guarda ni carga |
| OnFailure | Justo después del evento tipado | No aporta contexto |
Utiliza ChapterFailed cuando necesites Chapter, Objective y motivo; OnFailure sirve para respuestas sin parámetros desde el Inspector.
Eventos de Chapter y objetivo
- On Chapter StartEl Chapter ya está Active, antes de las esperas del objetivo.
- On Objective StartDespués de transporte y cambios de objetos del inicio.
- ObjectiveCompleted(index)Inmediatamente antes de las acciones finales aceptadas.
- On Objective CompletionDespués de guardar y cambiar objetos; antes de transporte y sonido.
- Objective.OnCompletedDespués de que el Chapter acepte y avance.
- On Chapter CompletionTras guardar el Chapter y antes del sonido y la transición.
Cuando se ejecuta Objective.OnCompleted, el Manager puede mostrar ya la fila siguiente. Si necesitas la anterior, utiliza el índice del evento tipado o guarda el contexto antes de llamar.
La restauración no reproduce el pasado
Aplicar estados Completed o Skipped no invoca inicio, finalización, fallo ni sonidos históricos. Se reconstruye el estado actual, no una lista de eventos. Tras OnManagerReady, lee la situación inicial y suscríbete por separado a los cambios futuros.
Leer un estado booleano tampoco emite un evento de cambio. ProgressionStateController dispone de su propio comportamiento On Loaded, que es una responsabilidad distinta.
Suscribirse y cancelar de forma simétrica
- Guarda la misma instancia utilizada al suscribirte.
- Añade una sola vez en OnEnable y elimina el mismo delegado en OnDisable.
- Vuelve a enlazar listeners del Chapter cuando cambie la selección.
- No confíes en que el singleton durante la destrucción sea la instancia antigua.
- Haz que la limpieza sea segura aunque disable y unload ocurran juntos.
Consulta los ejemplos compilados de Escuchar eventos con seguridad.