Empieza Default Chapter
Comprueba Next Chapter, contenido del destino y resultado del almacén/Flush.
Ejecución
Comprende las acciones finales, OnBeforeSceneLoad, la prioridad de la transferencia guardada y las reglas exactas para el capítulo y el objetivo de destino.
| Acción | Carga | Transferencia |
|---|---|---|
| None | No | Ninguna |
| Load Scene | Target Scene | Ninguna; el destino aplica su inicio normal |
| Load Scene and Start Chapter | Target Scene | Next Chapter ID y objetivo vacío |
| Restore Checkpoint | Target Scene | Next Chapter ID y Checkpoint Objective ID |
El Editor solo muestra los campos correspondientes. Los ID deben existir en el contenido de destino y se validan de nuevo durante la ejecución.
OnBeforeSceneLoad sucede antes de escribir la transferencia. Úsalo para cerrar interfaz o registrar telemetría, no para iniciar otra carga.
El nuevo Manager lee la transferencia, comprueba el capítulo y el objetivo, la elimina y confirma el borrado. Si es válida, prevalece sobre Testing Chapter y Default Chapter. Al consumirse una vez no afecta a una recarga posterior sin transferencia.
Sin transferencia válida se prueba la selección del Editor y después Default. Load Scene no escribe destino, por lo que el valor predeterminado es el resultado correcto. Load Scene and Start Chapter necesita un Next Chapter ID exacto.
Selecciona el Chapter y solicita reanudar desde la fila indicada, respetando las anteriores que ya sean Completed o Skipped. No restaura posición, inventario, salud ni objetos del mundo. Utiliza CheckpointPositionController, eventos o el sistema de partida para ello.
Comprueba Next Chapter, contenido del destino y resultado del almacén/Flush.
Puede estar guardado como Completed o Skipped.
Una llamada directa a SceneManager evita el Manager, su evento y la transferencia.
using System;
using System.Collections;
using System.Collections.Generic;
using OverFuture.ChapterObjectiveSystem.Chapters;
using OverFuture.ChapterObjectiveSystem.Events;
using OverFuture.ChapterObjectiveSystem.Objectives;
using OverFuture.ChapterObjectiveSystem.Persistence;
using OverFuture.ChapterObjectiveSystem.Progression;
using UnityEngine;
public sealed class BeforeSceneLoadExample : MonoBehaviour
{
private ChapterManager manager;
private void OnEnable()
{
manager = ChapterManager.Instance;
manager?.OnBeforeSceneLoad.AddListener(HandleBeforeSceneLoad);
}
private void OnDisable()
{
manager?.OnBeforeSceneLoad.RemoveListener(HandleBeforeSceneLoad);
manager = null;
}
private void HandleBeforeSceneLoad()
{
if (manager != null && manager.IsTransitioning)
{
Debug.Log("The accepted scene transition is about to load.", this);
}
}
}