Files
loneseDocument/Content/Blueprints/WBP_TestUI.md
meishibiezb a8bdf281ff update
2026-06-05 03:01:15 +08:00

4.5 KiB
Raw Permalink Blame History

WBP_TestUI

基本信息

  • 类型: WidgetBlueprint (UserWidget)
  • 父类: UserWidget
  • 源文件: /Game/Blueprints/UI/Dialog/WBP_TestUI.WBP_TestUI
  • 模块: Content/Blueprints/UI/Dialog

功能概述

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 插件

外部视角

WBP_TestUI 是 UserWidget 的子类,实现 IPresentationScriptExecutor 接口,从外部调用者视角:

公开属性(蓝图可读写)

  • NextScriptNameFName— 下一条要执行的脚本名称
  • SkyUltra_Dynamic_Sky_C*)— 超动态天空引用,用于环境变化命令

实现接口IPresentationScriptExecutor

  • ExecuteScript(FDialogPresentationScriptData InScript) — 启动一条演示脚本
  • ProcessScript(FDialogPresentationScriptCommand Presentation) — 逐条解析并执行脚本命令
  • ExecuteNextScript(FName Name) — 跳转到指定名称的脚本段

UI 管理函数

  • SummonChoiceButtons(FDialogPresentationScriptData Data) — 动态生成对话选项按钮WBP_ChoiceButton
  • SetNextScritp(FDialogPresentationScriptData Data) — 设置下一条脚本的目标
  • Get_MainText_Text()FText — 绑定主文本显示

EventGraph 事件

事件 类型 触发时机 行为
事件预构造 原生覆盖 (PreConstruct) Widget 在蓝图编辑器中放置或运行时创建时 预留(当前无连线逻辑)
事件构造 原生覆盖 (Construct) Widget 创建完成后 预留(当前无连线逻辑)
事件Tick 原生覆盖 每帧 预留(当前无连线逻辑)
事件ExecutePresentationScript 接口事件 (IPresentationScriptExecutor) UDialogPresentationSubsystem 调用时 接收 FDialogPresentationScriptData → 调用 ExecuteScript 启动脚本执行
On Clicked (Next) 组件绑定事件 用户点击"下一步"按钮时 读取 NextScriptName → 调用 ExecuteNextScript 跳转脚本

外部交互方式

  • 由 UDialogPresentationSubsystem 创建并调用 ExecuteScript
  • 通过 IPresentationScriptExecutor 接口与 Dialog 插件通信
  • 通过 WBP_ChoiceButton 动态生成选项按钮

使用方法

WBP_TestUI 在项目中的典型调用流程:

  • 对话脚本执行流程 — UDialogPresentationSubsystem 加载 DataTable → 收到对话触发信号 → 调用 ExecuteScript通过接口事件 ExecutePresentationScript)→ WBP_TestUI 的 ProcessScript 逐条解析 JSON 命令 → 更新 MainText 显示文本
  • 选项分支流程 — ProcessScript 遇到选项命令 → 调用 SummonChoiceButtons → 动态生成 WBP_ChoiceButton 并挂接到面板 → 用户选择一个选项 → 更新 NextScriptName
  • 下一步跳转流程 — 用户点击"下一步"按钮 → 触发 On Clicked (Next) → 读取 NextScriptName → 调用 ExecuteNextScript → 跳转到 FDialogPresentationScriptData 中对应名称的脚本段

用例

引用方 路径 用途
DialogTest /Game/地图关卡/DialogTest 在该关卡中执行对话演示脚本