Easy Chapter Generator
EnglishEspañol

Reunir varias señales con nombre

MultiActionObjective mantiene una lista de ramas y evalúa su conjunto como una sola condición. Es apropiado cuando varios sistemas deben confirmar su estado o cuando basta un mínimo. POWER, NAVIGATION y COMMS pueden activarse desde eventos distintos.

No conviertas en ramas tareas consecutivas que necesiten su propio inicio y final. Una rama solo tiene estado activo, eventos y temporizador; no dispone del ciclo completo de una fila.

Regla de finalización y ramas

CampoSignificadoRegla
Completion ModeAllBranchesActive o MinimumBranchesActiveAll exige todas; Minimum usa un número
Required Branch CountMínimo activoSe limita entre 1 y el total
Complete AutomaticallySolicita completar cuando se cumpleDesactívalo para emitir solo la condición
IdentifierClave estable de la ramaDebe ser única para llamadas por string
Display Name / DescriptionAyuda para el autorNo se utiliza para buscar
Deactivate Automatically / DelayDesactivación programadaUtiliza tiempo escalado
On Activated / On DeactivatedEventos de cambio realNo se repiten si el valor no cambia

Finalización automática o señal independiente

Con Complete Automatically, al cumplir la regla se llama a TryComplete(). El indicador de condición y On Condition Met solo se confirman si el Chapter acepta. Si la señal llegó pronto, podrá volver a evaluarse cuando el enlace sea activo.

Sin automatismo, la primera evaluación válida activa IsConditionMet e invoca el evento sin completar la fila. No volverá a emitirse hasta Reset.

API de ramas y llamadas inválidas

Existen sobrecargas por índice e ID para activar, desactivar, alternar, programar la desactivación y reiniciar. ActivateBranchTemporarily admite otro tiempo. Las variantes Try indican si cambió el estado. FindBranchIndex devuelve -1 cuando no encuentra; los índices e ID inválidos no producen excepciones y devuelven false o no hacen nada.

Para integraciones utiliza ID estables; los índices cambian al reordenar. ActiveBranchCount, TotalBranchCount e IsCompletionConditionMet() facilitan el diagnóstico.

Temporizadores, Reset y ejemplo completo

Activar cancela el temporizador anterior de esa rama, aplica el estado, invoca el evento solo si cambia, programa la desactivación opcional y evalúa. Los cambios aceptados y la finalización son idempotentes: repetir la misma señal no reproduce el evento ni completa dos veces. Reset detiene todos los temporizadores, limpia ramas, condición y estado base. ResetBranch invoca On Deactivated si la rama estaba activa; ResetObjective limpia el conjunto sin reproducir esos eventos.

  1. 1
    Crea POWER, NAVIGATION y COMMS con ID distintos.
  2. 2
    Elige Minimum, valor 2 y finalización automática.
  3. 3
    Conecta cada sistema a ActivateBranch(string).
  4. 4
    Activa una rama dos veces: su evento solo ocurre una. Activa la segunda: se completa una sola vez.
  5. 5
    Reinicia y confirma cero ramas activas y ningún temporizador pendiente.

Validación y diagnóstico

La regla se cumple y no avanza

Revisa Complete Automatically, el enlace y que la fila esté Active.

Una rama temporal no se apaga

Puede estar pausado Time.timeScale o una llamada posterior pudo sustituir el temporizador.

Una llamada por texto no actúa

Usa Identifier, no Display Name, con las mismas mayúsculas.

Minimum sorprende

El valor se limita al rango válido y una lista vacía nunca cumple.