【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"中的打印信息的节点也删除

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

相关推荐
小江村儿的文杰10 小时前
XCode Build时遇到 .entitlements could not be opened 的问题
ide·macos·ue4·xcode
Deveuper7 天前
UE5 UE4 播放视频没有声音解决
ue5·ue4·音视频
小江村儿的文杰18 天前
UE4安卓Gradle工程中的libUE4.so的生成原理
ue4
北冥没有鱼啊24 天前
UE5 射线折射
游戏·ue5·游戏引擎·ue4
Growthofnotes25 天前
UE4_Niagara基础实例—9、使用条带渲染器来制作闪电
ue4
Growthofnotes25 天前
UE4_Niagara基础实例—10、位置事件
ue4
directx3d_beginner25 天前
ue4 .usf抄写记录
ue4
 M͏⁠͏r.D1 个月前
UE4 材质学习笔记13(格斯特纳波)
学习·ue4·材质
Growthofnotes1 个月前
UE4_Niagara基础实例—8、生成网格体粒子并与角色产生交互
ue4
 M͏⁠͏r.D1 个月前
UE4 材质学习笔记11(水波纹着色器/水深度着色器)
学习·ue4·材质