Easy Chapter Generator
EnglishEspañol

Finalidad y uso correcto

Objective es el MonoBehaviour base para una mecánica de escena que solicita completar un objetivo ordenado. Puede añadirse directamente cuando un UnityEvent solo necesita llamar a CompleteFromEvent(). Debes heredar de él cuando la mecánica requiera campos, detección, estado temporal o un reinicio propio.

No es otro controlador de progreso: no selecciona Chapters, no avanza por índices, no guarda por sí solo y no busca títulos parecidos. Envía una solicitud exacta al Chapter actual.

Inspector y comportamiento

Campo o propiedadFinalidadRegla
Objective IDEnlaza el componente con la fila serializadaCoincidencia ordinal exacta; usa el selector
On CompletedRespuesta de escena tras aceptar la finalizaciónNo se invoca al rechazar o repetir
IsCompletedEstado local de esta ejecuciónSolo pasa a true después de la aceptación
ObjectiveIdLectura pública del IDSirve para diagnóstico, no para modificarlo

TryComplete() comprueba primero el estado local, obtiene el Chapter actual, llama a TryCompleteObjective y, solo si se acepta, actualiza el componente e invoca su evento.

API, repetición y reinicio

  • TryComplete() es público y devuelve si se avanzó.
  • CompleteFromEvent() es la entrada sin retorno para UnityEvent.
  • RequestObjectiveCompletion() es protected para subclases y conserva el mismo resultado.
  • ResetObjective() es virtual y borra el estado local.

Si sobrescribes Reset, llama a base.ResetObjective() y limpia contadores, referencias o corrutinas propios. No invoques eventos históricos ni cambies directamente el estado de la fila.

Solicitar la finalización desde una subclase

Dónde colocarlo
Guárdalo como LeverObjective.cs y añádelo al contenedor del objetivo seleccionado.
Cuándo llamarlo
Invoca NotifyLeverPulled desde la señal que confirma la interacción con la palanca.
Comportamiento
RequestObjectiveCompletion solo acepta el objetivo activo enlazado; un ID o capítulo incorrectos y una solicitud repetida devuelven false.
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 LeverObjective : Objective
{
    public bool NotifyLeverPulled()
    {
        return RequestObjectiveCompletion();
    }
}