Easy Chapter Generator
EnglishEspañol

Cuatro acciones de cierre

AcciónCargaTransferencia
NoneNoNinguna
Load SceneTarget SceneNinguna; el destino aplica su inicio normal
Load Scene and Start ChapterTarget SceneNext Chapter ID y objetivo vacío
Restore CheckpointTarget SceneNext 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.

Orden de una transición aceptada

  1. Validar escenaUn nombre vacío muestra una advertencia y termina.
  2. BloquearIsTransitioning pasa a true; otras cargas se ignoran y el fallo se rechaza.
  3. NotificarSe invoca OnBeforeSceneLoad.
  4. Guardar destinoSi existe Chapter ID, se escribe el JSON de un solo uso y se confirma con Flush.
  5. CargarSe llama a SceneManager.LoadScene.

OnBeforeSceneLoad sucede antes de escribir la transferencia. Úsalo para cerrar interfaz o registrar telemetría, no para iniciar otra carga.

Prioridad en la escena de destino

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.

Qué restaura Restore Checkpoint

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.

Empieza Default Chapter

Comprueba Next Chapter, contenido del destino y resultado del almacén/Flush.

Se salta el objetivo solicitado

Puede estar guardado como Completed o Skipped.

No se ejecuta OnBeforeSceneLoad

Una llamada directa a SceneManager evita el Manager, su evento y la transferencia.

Escuchar justo antes de cargar una escena

Dónde colocarlo
Añade el receptor junto a los sistemas que deban cerrar la interfaz o registrar telemetría antes de una carga.
Cuándo llamarlo
OnBeforeSceneLoad se ejecuta después de activar IsTransitioning y antes de guardar el destino transferido y llamar a SceneManager.LoadScene.
Comportamiento
El evento es una notificación, no una barrera de carga asíncrona. No inicies otra transición desde él.
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);
        }
    }
}