【UE4 RTS】12-HUD functionality Part2

前言

本篇实现了通过按钮控件暂停、加快、减慢游戏速度的功能。

效果

步骤

  1. 打开控件蓝图"GameTime_HUD",在设计器中对进度条控件的百分比创建一个绑定函数

绑定函数命名为"Get_ProgressBar_GameSpeed_SetSpeedDisplay",并设置该函数类别属于GameSpeed

新建一个浮点类型的变量,命名为"SpeedSetting",用于控制游戏速度,设置默认值为3

绑定函数的逻辑节点如下所示:

在设计器中,对如下三个按钮控件创建点击事件

在图表中,创建一个布尔类型的变量,命名为"isPaused",用于表示游戏是否暂停。

新建一个浮点类型变量,命名为"CurrentSpeedSetting"

设置变量"SpeedSetting"和"CurrentSpeedSetting"的类别为"GameSpeed"

在事件图表中添加如下节点

  1. 新建一个枚举,命名为"GameSpeedSettingEnum"

打开"GameSpeedSettingEnum",添加如下枚举值,其中速度0表示暂停,速度为3表示默认速度。

  1. 回到控件蓝图"GameTime_HUD"中,新添加一个函数,命名为"SetGameSpeed"

该函数添加一个输入,类型为我们刚创建的枚举"GameSpeedSettingEnum"

在该函数内创建一个局部变量"SpeedMultiplierLocal"

在函数内添加如下节点

  1. 打开游戏状态"RTS_GameState_BP",将如下"Set GameTime"节点替换为"Set GameSpeed"节点
  1. 回到控件蓝图"GameTime_HUD" 中,添加一个变量,命名为"GameStateRef",变量类型为"RTS_GameState"的对象引用。

继续在函数"SetGameSpeed"中添加如下节点:

回到事件图表中,补全暂停按钮"Button_Pause"的逻辑如下所示:

加快游戏速度的按钮"Button_IncreaseSpeed"的逻辑如下所示:

减少游戏速度的按钮"Button_DecreaseSpeed"的逻辑如下所示:

添加一个变量命名为"PlayerControllerRef",变量类型为"RTS_PlayerController_BP"的对象引用:

  1. 打开玩家控制器"RTS_PlayerController_BP"中的宏"SpawnWidgets":

在刷新节点后,可以看到新出现如下两个引脚

将玩家控制器本身和获取到的游戏状态的引用传入引脚

  1. 打开游戏状态"RTS_GameState_BP"中的函数"SetClock",删除如下区域的节点,让视口中不再输出打印信息。

还有函数"SetCalendar"中的打印信息的节点也删除

此时运行游戏可以看到我们通过点击按钮可以实现控制游戏速度的快慢:

相关推荐
上山老人1 天前
UE4布娃娃约束修改
ue4
Yuk丶6 天前
厌倦了假AI对话?用本地大模型给UE注入真智能(已开源!)
c++·人工智能·开源·ue4·游戏程序·ue4客户端开发
emplace_back7 天前
UE 使用UE4PrereqSetup_x64.exe一键安装依赖
ue4
Yuk丶11 天前
LPM的AI 角色三大核心技术实现:长效记忆、人格锁定、低延迟口语化
人工智能·ai·ue4·虚幻·ue4客户端开发
归真仙人13 天前
【UE】Lightmass可执行文件已经过时
ue5·游戏引擎·ue4·虚幻·unreal engine
DoomGT13 天前
Design - 一些免费图标网站
ue5·ue4·虚幻·虚幻引擎·unreal engine
归真仙人17 天前
【UE】VR一体机转场
ue5·ue4·vr·虚幻引擎·unreal engine
洋洋061717 天前
UE4/UE5 引擎常见面试题总结(1)
ue5·ue4
Yuk丶20 天前
UE4 与 UE5:技术差异深度解析
c++·ue5·游戏引擎·ue4·游戏程序·虚幻
晴夏。25 天前
unlua实现原理
游戏·ue5·ue4·lua·ue·unlua