战斗游戏输入缓冲系统:窗口、触发及流程要点梳理

梳理战斗游戏输入缓冲系统的关键要点,包括输入缓冲区窗口的定义与设置、不同触发方式的特点、动画通知的作用及输入缓冲流程,帮助开发者更好地应用该系统。

gips cover
罗传月武(YueWu)

作者

罗传月武(YueWu)

专注游戏开发和Web技术。

创建时间: 2025年4月09日更新时间: 2026年9月09日

目录

输入缓冲系统

“输入缓冲系统”是战斗类游戏中的常见需求,本框架也提供了对它的支持。

简单来说,通过配置输入缓冲,它能让你更容易实现分支连招效果,类似下图:


gips buffer intro

定义输入缓冲区窗口

在输入配置(InputConfig)上定义输入缓冲区窗口,这里定义的是所有可用的输入窗口。

gips input buffer window definitions

缓冲输入的触发方式有三种:

Column 1Column 2

LastInput

在窗口期间,最后一个按下的可被允许的输入,会在窗口期结束后触发该输入事件。它时默认方式。

HighestPriority

在窗口期间,只会记录任意输入中最高优先级的那个可缓冲输入,然后在窗口期结束后触发该输入。

Instant

在窗口期间,任意一个可被允许的输入事件发生,就立刻触发,并提前关闭窗口。

不同的触发方式,可以为你的游戏带来不同的感觉、以及更多样的机制变化。下面是一个连招在触发方式分别为Instant和LastInput时的效果。

Instant方式:

gips buffer instant

LastInput方式:

gips buffer lastinput

放置输入缓冲动画通知

动画状态通知:ANS_GCS_InputBufferWindow

你可以在动画Montage上放置该动画状态通知来控制缓冲窗口的开启/关闭。


gips buffer notify

在攻击完毕后的一段时间开启了名为“InputBuffer.Combo”的输入缓冲区窗口,该窗口允许接收战斗相关的其他输入(连招输入,Dodge等)。

在非Instant方式下,动画状态通知结束时,才会触发缓存的输入(如果有)。
如果多个输入缓冲区窗口产生重叠,那么只要有缓存的输入被触发,则会清空所有激活的输入缓冲区。

输入缓冲流程

输入缓冲机制与InputChecker配合使用,任何当前不被允许的输入,都会进入输入缓冲流程。

它的具体流程如下:

  1. 任何输入事件发生时,先通过InputChecker进行前置判定,用于决定该输入是否允许。
  2. 如果输入不被允许,则查询当前是否有激活的缓冲窗口,如果有激活窗口且该窗口允许当前的输入,则可以成功缓冲该输入。
  3. 缓冲的输入,在触发时,不再进行InputChecker而是直接执行该输入所关联的输入处理器。