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

4.3 KiB
Raw Blame History

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支持演示脚本中的环境效果命令