105. UE5 GAS RPG 搭建主菜单

在这一篇,我们将实现对打开游戏显示的主菜单进行搭建,主菜单将显示游戏主角,游戏名称和进入游戏和退出游戏两个按钮。

搭建菜单场景

我们将主菜单设置为一个单独的场景,前面可以显示对应的UI控件,用于玩家操作,后面可以显示一个场景,显示游戏的相关特色。

首先将我们之前的地牢场景复制一份

接着我们将游戏模式修改为无,之前的模式是战斗场景中使用的,我们不需要使用

直接将游戏模式重载设置为GameMode,如果设置为None,将使用默认的设置。

默认设置在项目设置中修改

接下来,我们创建一个用于显示玩家角色Actor,它只需要用于显示。

在蓝图内添加一个骨骼网格体用于显示角色

设置对应的资产和动画,角色直接使用动画资产播放动画即可。

在角色下面添加一个法杖和粒子系统

将粒子特效设置在固定位置

法杖添加对应的法杖模型,并且要设置附加的父节点位置,这样,法杖就可以直接显示在正确的位置。

正确效果如下

接着,我们在帧回调里,记录当前actor的执行时间,用于后续修改火球漂浮的效果

我们在曲线查看器里可以看到,正弦会在1到-1之间进行徘徊,我们可以以此值来设置

在蓝图事件开始执行时,我们将火球的默认位置存储下来

在帧回调里,通过sin转换到-1到1的范围值,然后通过一个值缩放此值,去修改火球世界场景的z坐标,火球就可以实现上下浮动的效果。

接着,我们在蓝图里添加一个贴花,来模拟角色头后面的魔法光环效果,我们设置在角色身后

然后在帧回调,给角色的x轴旋转添加一个旋转值,让魔法光环旋转起来。

效果如下。

创建主菜单UI

接着,我们创建主菜单的UI,单独创建一个MainMenu的文件夹,里面放置菜单场景的资源,将之前的Actor也放入其中。

在里面创建一个用户控件,用来设置游戏名称

在控件里,添加了一个覆层,覆层下面添加一个文本用于显示标题

在标题内填写相应的文字,效果如下

字体设置如下

接着,我们在蓝图里添加一个控件组件

设置在场景里显示我们创建的组件

调整好位置,在运行时,刚好不被角色挡住,这里大家可以自己随意发挥。当然,我还是喜欢用UI去显示游戏名称,那样更清晰一些,仁者见仁,智者见智吧。

接着,在蓝图运行时,播放一个背景音乐

音乐记得设置为循环,如果在当前场景,音乐会一直播放下去。

添加主界面UI

我们在ui上面添加标题以及进入游戏和退出游戏两个按钮。

我们创建一个新的用户控件,在里面添加一个canvas,在下面添加一个文本显示标题,然后添加两个宽按钮用来设置进入和退出游戏。

稍微调整后,效果如下

我们要找个地方执行它,刚好在之前的actor蓝图里,事件开始时,执行创建用户控件添加到视口

打开主菜单后,我们不需要鼠标操控场景,只需要对UI产生输入操作,并显示鼠标。

最后运行查看效果

绑定进入和退出游戏事件

这一篇文章的最后,我们复制一个新场景,作为进入游戏后使用的场景

新场景,我们将蓝图删除,这里不需要使用主菜单的蓝图。

接着,我们在主菜单的用户控件里绑定ui上的退出按钮回调,在回调里设置游戏退出事件

在进入游戏按钮,我们在事件回调里设置打开新关卡,可以将其设置为一个变量,也可以直接在节点上设置。

运行测试效果即可。

相关推荐
zhangzhangkeji5 天前
UE5 C++(71):文件是否存在,文件夹是否存在,FPaths :: FileExists( const FString & InPath) ;
ue5
妙为5 天前
UE5角色穿过石头穿模
ue5·unreal engine5·角色穿越石头·穿模
技术策划Boring6 天前
2025年工作复盘:开放世界3A项目配置管线与性能监控的探索
游戏·ue5·虚幻·p4·perforce
zhangzhangkeji8 天前
UE5 C++(70-2):定义成员函数 getCleanDirectory(..) 和枚举类 EFileDirectoryType,来获得目录
ue5
avi91119 天前
UE4-UE5虚幻引擎-前置学习三,优化,基础CPP
ue5·ue4·游戏开发·虚幻·游戏优化·游戏代码
zhangzhangkeji9 天前
UE5线程进阶(3-2):任务图的相关源码整理。 FGraphEvent 与 TGraphTask 的区别和联系
ue5
zhangzhangkeji10 天前
UE5线程进阶(3-1):
ue5
zhangzhangkeji11 天前
UE5线程进阶(2-3):enum ENamedThreads命名空间 :: Type : int32 { RHIThread = 0 } 是渲染硬件接口线程
ue5
zhangzhangkeji12 天前
UE5线程进阶(2-1):枚举类EAsyncExecution,作业类TAsyncRunnable、TAsyncQueuedWork,及全局线程函数 Async(..),及线程调用的 4 种方法总结
ue5
zhangzhangkeji12 天前
UE5线程进阶(1):
ue5