UE4中使用蓝图实现简易的游戏暂停功能

UE4中使用蓝图实现简易的游戏暂停功能,第1张

本文主要为个人笔记性质,小白怕忘知识点,如果可以帮助更多和我一样的UE4初学者, 也算功德一件【】

分析暂停功能主要流程为

按暂停按键 >游戏暂停>出现暂停菜单>再次按下暂停按键>暂停菜单关闭>游戏再次运行

所以,开始

首先设定暂停按键:

暂停功能首先要在Project Setting中找到input,添加一个暂停按键,名称为Pause。

打开Player蓝图(主角),右键,找到 设定好的暂停键——Pause ,键入蓝图。

3.    选中暂停键,在右上角找到Execute when Paused,勾上,表示游戏暂停时该按键也有效,如果没勾上游戏暂停了仿核,暂停也不好使了。

PS:因为暂停功能会一直可用,无论到哪个关卡,所以最好写在Player蓝图,而非关卡蓝图。

之后制作一个简单的Widget:

1.    右键选择User Interface,Widget Blueprint,新建一个Widget,命名PauseMenu。

2.   在左侧左侧Palette搜索Canvas Panel,下拉到Hierarchy中,新建备亮掘一个画布,之后再次搜索Text,下拉到Canvas Panel的子级下。

3.   选中Text,在右侧Details中找到Anchors,选择中心样式。之后找到Content,在Text栏后键入“Paused”

4.    在画布中间把text框移动到画面键野中央。

制作完成。

之后制作暂停键Function:

思路:方法要判断游戏 是否已经暂停 , 如果暂停 了如何 *** 作, 如果未暂停 如何 *** 作。

所以蓝图如下:

1.    在Player蓝图添加新Function,命名PauseGame,进入该Function。

2.   Function连接Branch,判断条件为 Is Game Paused。

3.    [endif]条件为假的时候(游戏正在运行,未暂停),连接Set Game Paused,Paused为真,这样游戏就暂停了,之后创建Widget,在输出引脚连接Create Widget,Class选择刚刚创建的PauseMenu。后在Owning Player拉出引脚,Get Player Controller,使这个Widget出现在玩家屏幕。

4.    右键Return Value,新建变量,将变量命名PauseMenu,连接引脚到Add to Viewpoint,连接Add引脚至Set Input Mode Game And UI,Player Controller连接参数Get Player Controller,In Widget to Focus参数为刚刚新建的变量PauseMenu,In Mouse Lock Mode选择不锁定,Do Not Lock,之后隐藏鼠标在截图时候勾上对号,让截图不被鼠标影响。

这段是为了让暂停Widget输出到屏幕,而候暂停的时候只有玩家的输入是有效的(刚刚也勾上了Execute when Paused),之后截图鼠标消失。

5.    Set Input Mode Game And UI引脚连接Show Mouse Cursor,勾上。Targat也是Get Player Controller。暂停时鼠标存在。

6.    条件为真时候(游戏已经暂停),执行游戏,引脚连接Set Game

Paused,Paused为假,引脚连接Remove All Widgets,去掉暂停界面。

7.    引脚连接Set Input Mode Game Only,参数连接依旧Get Player Controller,之后Show Mouse Cursor,取消勾选,参数Get Player Controller。

禁用鼠标,消去指针。

至此,暂停Function完成。

PS:Remove All Widget会移除所有Widget,所以如果你的HP等其他UI不见了,请把负责此功能的蓝图挂到Tick后面,保证一直刷新,不会被删掉。

最后

回到Player蓝图的Event Graph界面,指针直接连接即可。

游戏中按P就可以暂停游戏了。

笔记结束。

UE4引擎编辑UI通常使用WidgetBlueprint,HUD涵盖的面比WidgetBlueprint更广,包含2D、3D和其他,使用c++进行编写,但做UI不如WidgetBlueprint细致、功能多。首先,在ContentBrowser里右键选择生成一个WidgetBlueprint,打开WidgetBlueprint,根据需求选用Image、Text、ProgressBar等等组件设计你的UI画面。VR游戏里建议尽量降低UI在视野画面上占用的比例,话说,哪个逗逼喜欢看到眼前老有块抹不掉的东西。UI画面排版好之后,可以按需求设计曲线和帧动画,然后可以选定一个组件,在Details窗口里凡是有Bind的项都可以点开Bind选项编写逻辑,哥们可以根据需要设计编写,然后在Graph页面统一处理UI信息。注意,如果主角或者其他蓝图类需要调用到UI组件或者UI组件里的变量,则需要将组件的IsVariable项勾上,就在Details窗口第一行组件名后面。

WidgetBlueprint做好后,我们就要确定我们选择哪种方法给相机添加上UI,我这有两种方法,一种是直接绑到相机上,一种是动态添加给相机。直接绑到相机。打开主角的简运Character蓝图,添加一个SpringArm拉到Camera下面,再添加一个Widget组件拉到SpringArm下面,在Widget组件Details窗口的UserInterface栏的WidgetClass项设置UI蓝图类。注意,设置好UI蓝图类后,还需要将Widget组件倒转180度,并调节Widget的位置,使UI正好在相机视野里,而且这种方法做出的UI会随动作抖动,所以要严格控制抖动的范围和方向。Widget组件加到主角蓝图之后,Widget组件的UserInterface下的Space项选World,Image的Alpha值只有0和1两种情况,选Screen,Alpha值才可控。

动态添加给相机。先散咐链用CreateUIWidget生成一个UI组件冲孙,然后用AddtoViewport将UI添加到主角的视野里,如果需要隐藏UI,可以直接用RemovefromParent拉出来,等需要显示的时候再直接用AddtoViewport添加上去。注意,避免重复用Create

UIWidget生成组件,以免占用大量内存,生成后可以用AddtoViewport和[b]RemovefromParent控制UI的显示和隐藏。

学了3个月UE4,感觉上VR游戏其实并不太注重UI这部分,现阶段市面上的VR游戏绝大多数直接省略UI,学做UI只是让你在接到需求后多条路子去实现而已。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11982136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存