顺序回放多选

组件新增“顺序回放多选”能力,允许玩家在一个 Choice 节点中勾选多个选项,然后系统将这些选项对应的 TargetNodeID 分支作为一个队列,按对话形式依次播放。

蓝图 API:

  • SubmitChoiceSequential(SelectedChoiceIDs, bTriggerChoiceEvents=true, bOrderBySelected=true)

    • SelectedChoiceIDs:玩家勾选的 Choice GUID 数组(若 bOrderBySelected=true 将保留勾选顺序)

    • bTriggerChoiceEvents:是否广播每个 choice 的 OnSelectedEvent

    • bOrderBySelected:true 按玩家勾选顺序;false 按作者在 FDialogueChoiceNode 中的顺序

行为说明:

  • 系统从所选 choice 的 TargetNodeID 构建内部顺序队列,并将每个分支作为完整对话播放。

  • 保留 DisplayDelay/AutoAdvanceDelay 行为,毫秒级性能开销。

  • 顺序模式下,Text 节点若 AutoAdvanceDelay == 0 将自动推进,避免停滞。

  • 若分支内遇到下一个 Choice 节点,视为该分支结束(默认策略:停止于下一个 Choice),系统立即切换到队列的下一个已选分支,确保“已选分支必定全部执行”。

  • 若某个分支的 TargetNodeID 无效或条件不满足,会跳过该分支并继续后续分支。

事件:

  • OnDialogueChoiceSelected:顺序回放开始前,广播一次最终有效的选择集合

  • OnDialogueNodeExecuted:每个 Text 节点触发,提供 SpeakerInfo

  • OnDialogueEventTriggered:对话节点/choice 的事件

  • OnDialogueStarted / OnDialogueEnded:顺序回放会按常规流程触发开始/结束事件

注意与最佳实践:

  • 如在编辑器中重新生成 Choice 的 GUID 或重连 TargetNodeID,UI 必须传入最新的 GUID。

  • 设计分支时,建议将“后续需要玩家再次决策”的 Choice 放在分支更深层;顺序模式的默认策略会在遇到下一个 Choice 时结束当前分支,以保证所有已选分支都会被播放。

  • 如需不同策略(例如自动选择第一个可用选项、按标签选择、跳过所有后续 Choice),可在组件中扩展策略枚举;默认策略优先“可预期性与鲁棒性”。

Last updated