跳转至

动作拦截器

当项目需要让状态、配置或调试工具在动作执行前后做横切处理时,可以继承 GFActionInterceptor 并注册到队列。

拦截器返回 GFActionInterceptionResult,可继续、跳过、替换当前动作,或停止后续队列。

默认没有拦截器时,GFActionQueueSystem 行为保持不变。

class_name SkipInvalidTargetVisuals
extends GFActionInterceptor


func before_execute(action: GFVisualAction, _queue: GFActionQueueSystem) -> GFActionInterceptionResult:
    if action.has_method("has_target") and not action.call("has_target"):
        return GFActionInterceptionResult.skip_action()
    return GFActionInterceptionResult.continue_action()


var q_sys := Gf.get_system(GFActionQueueSystem) as GFActionQueueSystem
q_sys.add_interceptor(SkipInvalidTargetVisuals.new())

拦截器按 priority 从高到低执行。

它不提供卡牌、Buff、剧情或回合规则;这些规则应留在项目自己的 System、Command 或 Action 子类中。