【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 天前
UE 使用事件分发器设计程序
游戏·ue5·ue4·游戏开发·虚幻
GR9013 天前
UE4 踩坑记录
ue4
程序猿熊跃晖13 天前
解决 Unreal Engine 5.2 中服务器目标构建问题:从源码编译到项目配置优化
ue4
Ⅰㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ15 天前
开篇 - Unlua+VsCode的智能提示、调试
vscode·ue4·智能提示·unlua
吴梓穆23 天前
UE5学习笔记 FPS游戏制作33 换子弹 动画事件
笔记·学习·ue4
吴梓穆23 天前
UE5学习笔记 FPS游戏制作31 显示计分板
笔记·学习·ue4
吴梓穆24 天前
UE5学习笔记 FPS游戏制作28 显式玩家子弹数
笔记·学习·ue4
Deveuper1 个月前
UE5 UE4 右键/最大化-菜单-不显示/闪/黑色/黑屏--修复方法
ue5·ue4
吴梓穆1 个月前
UE4学习笔记 FPS游戏制作32 主菜单,暂停游戏,显示鼠标指针
笔记·学习·ue4
吴梓穆1 个月前
UE4学习笔记 FPS游戏制作17 让机器人持枪 销毁机器人时也销毁机器人的枪 让机器人射击
笔记·学习·ue4