TryComplete devuelve false
Comprueba Manager, Chapter Active, fila Active e ID exacto.
Componentes
Utiliza el MonoBehaviour base admitido para crear detectores de finalización propios y compartir el comportamiento del enlace del objetivo.
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.
| Campo o propiedad | Finalidad | Regla |
|---|---|---|
| Objective ID | Enlaza el componente con la fila serializada | Coincidencia ordinal exacta; usa el selector |
| On Completed | Respuesta de escena tras aceptar la finalización | No se invoca al rechazar o repetir |
| IsCompleted | Estado local de esta ejecución | Solo pasa a true después de la aceptación |
| ObjectiveId | Lectura pública del ID | Sirve 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.
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.
Añade el componente al contenedor previsto y utiliza Select Chapter y el selector de objetivo. Linked indica que resuelve. Missing señala un ID inexistente; Wrong Chapter, una incoherencia de propietario; Duplicate Binding, varios detectores para la misma fila.
Comprueba Manager, Chapter Active, fila Active e ID exacto.
Solo ocurre tras la aceptación; revisa el bool de la llamada.
Sobrescribe Reset y limpia todo el estado temporal.
El tutorial compilado está en Crear un componente Objective personalizado.
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();
}
}