创建并使用 Widget

创建并使用 Widget

Widget 可用于在游戏中显示自定义界面。本文通过显示玩家位置的示例,介绍如何创建 Widget、在 ModActor 中初始化它并调用其方法。

来源:Dmgvol / UE_Modding 原文。详细资料可参考虚幻引擎的 UMG UI 设计器快速入门。

创建 Widget

在内容浏览器中右键,选择 User Interface → Widget Blueprint,然后在 Common 中选择 User Widget。可按 WBP_ 前缀命名,例如 WBP_MyWidget。

创建 Widget Blueprint

为 Widget 命名

双击打开 Widget,在左上角搜索 Canvas 并将其拖到层级树的根对象上。再搜索 Text,将它拖到 Canvas Panel 上。将文本设为变量、命名并调整位置。

添加 Canvas

添加 Text

将文本设为变量并调整位置

布局和面板的更多信息可参阅官方 Widget Blueprints 文档。

设置 Widget 事件图表

进入 Widget 的 Event Graph,右键搜索 custom 创建自定义事件,命名为 SetPositionText,并添加一个 Vector 类型的输入变量。按照下图连接逻辑。

创建自定义事件

添加 Vector 输入

设置位置文本的节点逻辑

初始化 Widget

在 Mod 的 ModActor 中添加 Create Widget 节点,连接到 BeginPlay,使 Actor 生成时创建 Widget;在 Class 字段选择 Widget 类,再连接 Add to Viewport 节点。

创建 Widget 并添加到视口

为了之后访问 Widget,从其 Return Value 引脚拖出并提升为变量。

将 Widget 引用保存为变量

更新显示内容

示例在 Event Tick 中获取玩家 Pawn 的位置,再调用 Widget 的方法更新位置文本。原文建议避免在 ModActor 等 Widget 外部直接访问文本组件,而是通过方法降低对象间的耦合。

获取位置并更新 Widget

游戏中显示位置的 Widget

为了提高可读性,可以给数据添加文字说明;对于 Vector,原文示例还将数值除以 100。

格式化位置数据

格式化后的显示结果