Skip to main content

f8-features-procedure-workflow

Use when implementing or troubleshooting Procedure feature workflows — game flow control, ProcedureNode management in F8Framework.

Ir a la instalación

Datos de origen

Repositorio
TippingGame/F8Framework
Última actividad en el origen
1 de abril de 2026 a las 11:00
Idioma detectado de SKILL.md
inglés
Estrellas
884
Forks
141

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
2 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
f8-features-procedure-workflow
description
Use when implementing or troubleshooting Procedure feature workflows — game flow control, ProcedureNode management in F8Framework.
# Procedure Feature Workflow > **⚠️ IMPORTANT**: Before using this feature, you **MUST** formally initialize F8Framework in the launch sequence. Ensure `ModuleCenter.Initialize(this);` has run first, then create the required module, for example `FF8.Procedure = ModuleCenter.CreateModule<ProcedureManager>();`. ## Use this skill when - The task is about game flow control, procedure/state management. - The user asks about ProcedureNode, game phases, or scene-level flow transitions. ## Path resolution 1. Prefer project source at Assets/F8Framework. 2. For usage docs, read: Assets/F8Framework/Tests/Procedure/README.md ## Sources of truth - Runtime module: Assets/F8Framework/Runtime/Procedure - Test docs: Assets/F8Framework/Tests/Procedure ## Key classes and interfaces | Class | Role | |-------|------| | `ProcedureManager` | Core module. Access via `FF8.Procedure`. | | `ProcedureNode` | Abstract base class for game flow nodes. | | `ProcedureProcessor` | Runtime context passed to procedure lifecycle methods. | ## API quick reference ```csharp // Add procedure node (optional — auto-search for ProcedureNode subclasses on init) FF8.Procedure.AddProcedureNodes(new DemoInitState()); // Run a specific procedure FF8.Procedure.RunProcedureNode<DemoInitState>(); // Remove procedure FF8.Procedure.RemoveProcedureNode<DemoInitState>(); // Check existence FF8.Procedure.HasProcedureNode<DemoInitState>(); // Get procedure node FF8.Procedure.PeekProcedureNode(out DemoInitState initState); // Current procedure ProcedureNode current = FF8.Procedure.CurrentProcedureNode; // Procedure count int count = FF8.Procedure.ProcedureNodeCount; ``` ### ProcedureNode template ```csharp public class DemoInitState : ProcedureNode { public override void OnInit(ProcedureProcessor processor) { } public override void OnEnter(ProcedureProcessor processor) { } public override void OnUpdate(ProcedureProcessor processor) { } public override void OnExit(ProcedureProcessor processor) { } public override void OnDestroy(ProcedureProcessor processor) { } } ``` ## Workflow 1. Define game phases as `ProcedureNode` subclasses (Init, Login, Lobby, Battle, etc.). 2. Register nodes via `AddProcedureNodes()` or let auto-search find them. 3. Start flow with `RunProcedureNode<InitState>()`. 4. Transition between nodes by calling `RunProcedureNode<NextState>()` from within a node (automatically exits current). 5. Use `OnEnter`/`OnExit` for setup/cleanup, `OnUpdate` for per-frame logic. 6. Query current state with `CurrentProcedureNode`. ## Common error handling | Error | Cause | Solution | |-------|-------|----------| | Procedure not found | Not registered | Add via `AddProcedureNodes()` or check auto-search | | Multiple procedures running | Calling Run without exiting current | Each Run auto-exits current node | ## Cross-module dependencies - **Module**: ProcedureManager is created via ModuleCenter. - **FSM**: For finer-grained state control within a procedure, use FSM. ## Output checklist - Procedure nodes defined for all game phases. - Transition flow documented. - Files changed and why. - Validation status and remaining risks.
Ver en GitHub