Files
loneseDocument/Content/Blueprints/WBP_TestUI.md
meishibiezb 29a3f77908 init
2026-06-04 21:44:13 +08:00

58 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WBP_TestUI
## 基本信息
- **类型**: Widget Blueprint (UserWidget)
- **父类**: UserWidget
- **源文件**: /Game/Blueprints/UI/Dialog/WBP_TestUI.WBP_TestUI
- **模块**: Content
## 功能概述
WBP_TestUI 是对话演示脚本的显示/执行 Widget实现了 IPresentationScriptExecutor 接口。它接收 FDialogPresentationScriptData解析其中的 JSON 命令,构建 UI 选择按钮,驱动演示脚本的执行流。同时持有 Ultra Dynamic Sky 引用以支持环境变化命令。
## 设计用意
WBP_TestUI 是 Dialog 插件在 UI 层的具体实现,承担了脚本执行和 UI 展示的双重职责。在脚本执行侧,它通过 IPresentationScriptExecutor 接口接收 UDialogPresentationSubsystem 的脚本调用,使用 ExecuteScript 启动脚本、ProcessScript 逐条执行命令、ExecuteNextScript 控制流程跳转。在 UI 管理侧,它通过 SummonChoiceButtons 动态生成选项按钮、SetNextScript 设置跳转目标、Get_MainText_Text 绑定主文本显示。这种双职责设计使一个 Widget 即可完成从数据到显示的完整链路。
## 职责范围
WBP_TestUI 负责演示脚本的接收和执行、对话 UI 的生成和更新、脚本流程控制(跳转、选项分支)。命令的具体实现由 IPresentationStrategyPlugin 处理DataTable 管理由 UDialogPresentationSubsystem 负责。
## 项目内依赖
| 依赖项 | 关系 | 源文件 |
|--------|------|--------|
| FDialogPresentationScriptData | 输入数据 | Dialog 插件 |
| FDialogPresentationScriptCommand | 输入数据 | Dialog 插件 |
| IPresentationScriptExecutor | 实现接口 | Dialog 插件 |
| UDialogPresentationSubsystem | 调用 | Dialog 插件 |
## 对外接口
- **蓝图函数**
- `ExecuteScript(FDialogPresentationScriptData InScript)` -- 启动演示脚本,接收脚本数据并开始执行流程
- `ProcessScript(FDialogPresentationScriptCommand Presentation)` -- 处理单条脚本命令,逐条执行演示命令
- `ExecuteNextScript(FName Name)` -- 跳转到指定名称的下一个脚本,实现脚本流程控制
- `SummonChoiceButtons(FDialogPresentationScriptData Data)` -- 根据脚本数据中的 Choices 字段动态生成选择按钮 UI
- `SetNextScritp(FDialogPresentationScriptData Data)` -- 设置下一个要执行的脚本(通过 NextScriptName 变量)
- `Get_MainText_Text() -> FText` -- 数据绑定函数,返回主文本框的对话文本内容
- **蓝图变量**(均为 is_instance_editable
- `NextScriptName` (FName) -- 存储下一个脚本的名称,用于流程跳转
- `Sky` (Ultra_Dynamic_Sky_C*) -- Ultra Dynamic Sky 引用,用于执行环境变化命令(如改变天气、时间)
- **IPresentationScriptExecutor 接口实现**BlueprintNativeEvent
- `ExecutePresentationScript(const FDialogPresentationScriptData& ScriptStruct)` -- 执行演示脚本
- `PlugStrategyIn(FName StrategyName, const TScriptInterface<IPresentationStrategyPlugin>& NewStrategy)` -- 插件式注入策略
- `UnplugStrategy(FName StrategyName)` -- 移除策略插件
- **EventGraph**:含 5 个事件和 8 个节点
## 使用方法
- 作为 UserWidget 创建并添加到视口,通常由 UDialogPresentationSubsystem 管理
- 实现 IPresentationScriptExecutor 接口,作为 Dialog 插件的脚本执行器
- UDialogPresentationSubsystem 调用 `ExecutePresentationScript` 投递脚本,本 Widget 通过 `ExecuteScript` 启动执行
- `ProcessScript` 逐条解析脚本命令:通过 UPresentationJsonLibrary 解析 JSON 命令字符串,识别 CommandName 和 Params
- `SummonChoiceButtons` 根据 Choices 数据动态创建选项按钮列表,按钮绑定 `ExecuteNextScript` 处理选择
- `SetNextScritp` / `ExecuteNextScript` 控制脚本流程的线性或分支推进
- `Get_MainText_Text` 作为 UMG 数据绑定函数,连接 UI 文本框显示对话内容
- `Sky` 变量用于连接到场景中的 Ultra Dynamic Sky Actor脚本命令可改变天气/时间等环境效果
- 策略插件通过 `PlugStrategyIn` / `UnplugStrategy` 动态注入,支持在运行时扩展脚本命令的处理策略
## 用例
- Dialog 系统的 UI 执行器,实现 IPresentationScriptExecutor 接口
- 由 UDialogPresentationSubsystem 调用,作为对话脚本的显示和交互界面
- 通过 `Sky` 变量连接 Ultra Dynamic Sky支持演示脚本中的环境效果命令