快速上手(5 步)

👋快速上手

1

创建数据资产

  1. 在内容浏览器右键 → 找到Miscellaneous → 找到Data Asset → 选择DialogueDataAsset → 命名

  2. 打开DialogueDataAsset 资产,按照您的需求进行配置。

    • SpeakerInfos: 添加说话者,设置 SpeakerNameDisplayNameAvatarSpeakerColor

      • GlobalVariables: 定义变量,设置 VariableNameValueTypeDefaultValue

      • DialogueSequences: 创建新序列,设置 SequenceNameStartNodeID

    注意:黄框内容需格外注意,因为关系到第一个对话的启动,以及不同对话的衔接!第一个对话以及下一个对话均是由GUID识别并控制。

2

配置节点

文本节点(NodeType=TextFDialogueNode

  • 设置 DialogueText(对话文本)

  • 设置 SpeakerName(引用 SpeakerInfos 中的说话者)

  • 配置 DisplayDelay(显示文本前的延时,0 = 立即)

  • 配置 AutoAdvanceDelay(延时后自动推进,0 = 手动)

  • 设置 NextNodeID(此节点后的目标节点)

选择节点(FDialogueChoiceNode

  • 设置 PromptText(问题或提示文本)

  • Choices 数组中添加选择

  • 配置 bAllowMultipleSelection(true 启用多选)

  • 设置 MinSelectionCountMaxSelectionCount(多选时)

  • 配置 SelectionTimeout(秒数,0 = 无超时)

  • 设置 TimeoutNodeID(超时后跳转的节点)

条件/事件/延时节点

  • 条件: 向节点的 Conditions 数组添加条件

  • 事件: 设置 EventName 以广播事件

  • 延时: 将 DisplayDelay 设置为延时秒数

3

将组件添加到你的Actor上

  1. 选择将驱动对话的 Actor(例如:玩家角色、UI 控制器)

  2. 添加组件 → 搜索 Dialogue System Component

  3. 在 BeginPlay 或初始化时:

    • 调用 LoadDialogueDataAsset(DataAsset),传入你的 DialogueDataAsset

4

启动与驱动对话(蓝图)

启动对话

  • 调用 StartDialogue(SequenceName),传入数据资产中的序列名称

事件绑定

  • 文本节点事件: 绑定 OnDialogueNodeExecuted(Node, SpeakerInfo, NodeID) 以显示 UI

  • 选择节点事件: 绑定 OnDialogueChoiceNodeExecuted(ChoiceNode, AvailableChoices, NodeID) 以显示选择

  • 事件回调: 绑定 OnDialogueEventTriggered(EventName) 用于外部系统集成

  • 对话结束: 绑定 OnDialogueEnded 用于清理

推进对话

  • 自动: 如果 AutoAdvanceDelay > 0,对话自动推进

  • 手动: 玩家点击"下一步"时调用 AdvanceDialogue()

提交选择

  • 从 UI 收集选中的 ChoiceID 值(FGuid)

  • 调用 SubmitChoice(SelectedChoiceIDs),传入选中的选择 ID 数组

  • 若需要按对话形式依次自动播放多个已选分支,调用 SubmitChoiceSequential(SelectedChoiceIDs, bTriggerChoiceEvents=true, bOrderBySelected=true)

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

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

对话结束

  • 序列完成时,组件自动触发 OnDialogueEnded

5

管理变量与条件

读取变量

  • 调用 GetVariableValue(VariableName, OutValue) 读取当前值

设置变量

  • 调用 SetVariableValue(VariableName, ValueString, ValueType) 修改运行时变量

条件评估

  • 节点 Conditions 决定节点是否执行(所有条件必须通过)

  • 选择 AvailabilityConditions 决定选择是否可见/可选

  • 条件由系统自动评估


最小工作流(快速参考)

  1. 创建 DialogueDataAsset → 配置 SpeakerInfosGlobalVariablesDialogueSequences

  2. 添加 DialogueSystemComponent 到 Actor → 调用 LoadDialogueDataAsset

  3. 绑定 事件:OnDialogueNodeExecutedOnDialogueChoiceNodeExecutedOnDialogueEventTriggeredOnDialogueEnded

  4. 启动 对话:StartDialogue(SequenceName) → 更新 UI → AdvanceDialogue()SubmitChoice()

Last updated