快速上手(5 步)
👋快速上手
创建数据资产
在内容浏览器右键 → 找到Miscellaneous → 找到Data Asset → 选择
DialogueDataAsset→ 命名

打开
DialogueDataAsset资产,按照您的需求进行配置。SpeakerInfos: 添加说话者,设置
SpeakerName、DisplayName、Avatar、SpeakerColorGlobalVariables: 定义变量,设置
VariableName、ValueType、DefaultValueDialogueSequences: 创建新序列,设置
SequenceName和StartNodeID
注意:黄框内容需格外注意,因为关系到第一个对话的启动,以及不同对话的衔接!第一个对话以及下一个对话均是由GUID识别并控制。

配置节点
文本节点(NodeType=Text 的 FDialogueNode):
设置
DialogueText(对话文本)设置
SpeakerName(引用 SpeakerInfos 中的说话者)配置
DisplayDelay(显示文本前的延时,0 = 立即)配置
AutoAdvanceDelay(延时后自动推进,0 = 手动)设置
NextNodeID(此节点后的目标节点)
选择节点(FDialogueChoiceNode):
设置
PromptText(问题或提示文本)在
Choices数组中添加选择配置
bAllowMultipleSelection(true 启用多选)设置
MinSelectionCount和MaxSelectionCount(多选时)配置
SelectionTimeout(秒数,0 = 无超时)设置
TimeoutNodeID(超时后跳转的节点)

条件/事件/延时节点:
条件: 向节点的
Conditions数组添加条件事件: 设置
EventName以广播事件延时: 将
DisplayDelay设置为延时秒数
将组件添加到你的Actor上
选择将驱动对话的 Actor(例如:玩家角色、UI 控制器)

添加组件 → 搜索 Dialogue System Component

在 BeginPlay 或初始化时:
调用
LoadDialogueDataAsset(DataAsset),传入你的DialogueDataAsset

启动与驱动对话(蓝图)
启动对话:
调用
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 的OnSelectedEventbOrderBySelected:true 按玩家勾选顺序;false 按作者在FDialogueChoiceNode中的编排顺序
对话结束:
序列完成时,组件自动触发
OnDialogueEnded

管理变量与条件
读取变量:
调用
GetVariableValue(VariableName, OutValue)读取当前值
设置变量:
调用
SetVariableValue(VariableName, ValueString, ValueType)修改运行时变量
条件评估:
节点
Conditions决定节点是否执行(所有条件必须通过)选择
AvailabilityConditions决定选择是否可见/可选条件由系统自动评估

最小工作流(快速参考)
创建
DialogueDataAsset→ 配置SpeakerInfos、GlobalVariables、DialogueSequences添加
DialogueSystemComponent到 Actor → 调用LoadDialogueDataAsset绑定 事件:
OnDialogueNodeExecuted、OnDialogueChoiceNodeExecuted、OnDialogueEventTriggered、OnDialogueEnded启动 对话:
StartDialogue(SequenceName)→ 更新 UI →AdvanceDialogue()或SubmitChoice()
Last updated