蓝图 Mod 示例:自定义日志通知

蓝图 Mod 示例:自定义日志通知

本文通过自定义 Widget 展示调试消息和通知。开始前,读者应已了解如何创建蓝图、Widget、方法和变量。

来源:Dmgvol / UE_Modding 原文。

示例需要三个资产:ModActor 负责 Mod 的主要逻辑;WBP_Logger 保存通知列表;WBP_Notification 显示单条通知的消息。

创建日志 Widget 布局

新建 WBP_Logger,添加 Canvas Panel 和 Scroll Box,将后者锚定在左侧并沿垂直方向拉伸。勾选“size to content”,再勾选“Is Variable”并命名。原文使用简单的纵向布局,使新增通知依次堆叠;布局可按需要调整。完成通知 Widget 后再回来添加逻辑。

日志 Widget 的通知列表布局

创建通知 Widget

新建 WBP_Notification,添加 Canvas Panel 和 Text 组件。给文本组件命名,勾选 Is Variable 和 Size to Content,将 Margin 设置为 10, 0, 10, 10。

通知 Widget 的文本组件设置

进入事件图表,按下图创建逻辑,让计时器在指定秒数后触发 DestroyNotification 自定义事件,再从父组件移除通知。可创建一个 float 变量设置通知显示时长。原文将事件名称拼成了 DestroyNofitication,此处按截图中的名称书写。

定时销毁通知的逻辑

添加通知

回到 WBP_Logger,按图设置逻辑:创建名为 PushNotification 的自定义方法,添加 String 输入;用 Create Widget 创建通知 Widget,在 Class 字段指定其类;获取 Widget 的文本组件并设置文本,最后将新 Widget 作为 Scroll Box 的子项加入。

创建并加入通知的节点

创建 ModActor 并调用日志

创建名为 ModActor 的主 Actor 蓝图,创建日志 Widget、将它加入视口,并把引用保存为变量。

在 ModActor 中初始化日志 Widget

原文示例根据按下的不同按键推送不同通知;也可以将其用于调试或向玩家显示其他信息。只要持有 Widget 实例的引用,就可以推送通知。

根据按键推送通知

示例中,通知会在列表中堆叠,每条在三秒后消失。

堆叠显示并自动消失的通知