概念速览
插件概述
Easy Dialogue System 是一个专业级的对话管理插件,适用于虚幻引擎 5。它通过数据驱动架构提供完整的解决方案,用于创建、管理和执行对话序列。系统完全暴露给蓝图,允许设计师无需编写代码即可创建复杂的对话树。
插件目录结构
EasyDialogueSystem/
├── DialogueSystem.uplugin # 插件描述文件 (JSON)
├── README.md # 插件概览和文档
├── Config/ # 插件配置文件
├── Content/ # 插件内容资产(可选)
├── Docs/ # 文档目录
│ ├── DialogueSystem_GettingStarted.md # 英文版本文档
│ └── DialogueSystem_GettingStarted_CN.md # 中文版本文档(本文件)
├── Resources/ # 插件资源(图标、缩略图)
├── Binaries/ # 编译后的二进制文件(自动生成)
│ └── Win64/
│ └── UnrealEditor-DialogueSystemRuntime.dll
├── Intermediate/ # 构建中间文件(自动生成)
└── Source/ # 源代码目录
└── DialogueSystemRuntime/ # 运行时模块
├── DialogueSystemRuntime.Build.cs # 模块构建配置
├── Public/ # 公共接口头文件
│ ├── DialogueSystemRuntime.h # 模块入口点
│ ├── DialogueSystemTypes.h # 核心类型定义
│ ├── DialogueDataAsset.h # 数据资产类
│ └── DialogueSystemComponent.h # 运行时组件类
└── Private/ # 实现文件
├── DialogueSystemRuntime.cpp # 模块实现
├── DialogueDataAsset.cpp # 数据资产实现
└── DialogueSystemComponent.cpp # 组件实现核心概念
数据资产 UDialogueDataAsset
UDialogueDataAsset中央数据容器,存储:
对话序列: 包含节点和选择的完整对话树
说话者信息: 说话者元数据(名称、显示名称、头像、颜色)
全局变量: 带默认值的运行时变量
对话结构
FDialogueSequence: 完整的对话序列,包含:唯一序列 ID 和名称
起始节点引用
对话节点数组
选择节点数组
用于扩展的元数据
FDialogueNode: 单个对话节点,支持:文本节点:显示带说话者信息的对话文本
条件节点:基于条件分支
事件节点:向外部系统广播事件
延时节点:等待指定时长
通过
NextNodeID链式链接
FDialogueChoiceNode: 选择分支节点,包含:多个选择选项
单选或多选支持
最小/最大选择约束
超时处理与回退节点
每个选择的可用性条件
FDialogueCondition: 变量比较系统:支持整数、浮点数、布尔值、字符串类型
多种操作符:等于、不等于、大于、小于、包含等
基于字符串的比较值
运行时组件 UDialogueSystemComponent
UDialogueSystemComponent执行引擎,负责:
加载和管理对话数据资产
使用基于 Tick 的时序执行对话序列
处理延时、超时和自动推进
为 UI 和外部系统集成广播事件
管理运行时变量
源代码结构
公共头文件
DialogueSystemRuntime.h模块接口类
API 宏定义 (
DIALOGUE_SYSTEM_RUNTIME_API)模块生命周期管理
DialogueSystemTypes.h核心类型定义和枚举
EDialogueNodeType: 节点类型枚举(文本、选择、条件、事件、延时)EDialogueConditionOperator: 条件操作符(等于、大于、小于、包含等)EDialogueValueType: 值类型(整数、浮点数、布尔值、字符串)FDialogueCondition: 变量比较条件结构FSpeakerInfo: 说话者信息结构FDialogueNode: 对话节点结构FDialogueChoice: 选择选项结构FDialogueChoiceNode: 选择分支节点结构FDialogueSequence: 完整对话序列容器
DialogueDataAsset.hFGlobalVariable: 全局变量定义UDialogueDataAsset: 主要数据资产类数据资产查询和验证函数
DialogueSystemComponent.hUDialogueSystemComponent: 运行时执行组件蓝图集成的事件委托
对话控制函数(开始、推进、停止、提交选择)
变量管理函数
私有实现
DialogueSystemRuntime.cpp: 模块启动和关闭DialogueDataAsset.cpp: 数据资产实现和验证DialogueSystemComponent.cpp: 组件逻辑、Tick 处理和节点执行
运行要求
引擎: 虚幻引擎 5.6 或更高版本
模块依赖:
Core- 核心引擎功能CoreUObject- 对象系统Engine- 引擎运行时UMG- UI 系统(用于 UI 集成示例)Slate- Slate UI 框架SlateCore- Slate 核心功能
依赖项在 DialogueSystemRuntime.Build.cs 中自动配置。
Last updated