当前位置: 首页 > article >正文

【UE5】环形菜单教程

效果

步骤

1. 下载图片资源:百度网盘 请输入提取码 提取码:fjjx

2. 将图片资源导入工程,如下

3. 新建3个控件蓝图,这里分别命名为“WBP_CircularMenu”、“WBP_Highlight”、“WBP_Icon”

4. 打开“WBP_Icon”,设置“所需”

添加“尺寸框”,设置宽度和高度重载为70

添加一个图像控件,这里命名为“Image_Icon”

添加一个动画,让图像控件“Image_Icon”在0.2s后扩大为1.2倍

添加一个自定义事件“InitUI”,该事件添加一个输入“Icon”,类型为“Texture2D”的对象引用

该事件用于设置图像控件图像

再添加一个自定义事件,这里命名为“SetHighlight”,该事件添加一个布尔类型变量“bHighlight” ,表示是否高亮

该事件执行后,如果“bHighlight”为True,就通过动画让图像控件扩大为1.2倍,否则图像还原

5. 打开控件蓝图“WBP_Highlight”,添加一个图像控件,这里命名为“Image_Highlight”

设置“所需”

在图表添加一个自定义事件“InitUI”,该事件添加一个输入“HighlightImg”,变量类型为“Texture2D”的对象引用

6. 新建一个材质,这里命名为“M_CircularBase”,该材质用于实现渐变

打开“M_CircularBase”,设置“材质域”为“用户界面”,混合模式为“半透明”

添加如下节点,在预览效果中可以看到已经出现了渐变效果

7. 回到“WBP_Highlight”,添加两个线性颜色变量

设置颜色默认值

当自定义事件“InitUI”执行后,创建一个材质“M_CircularBase”的材质实例,然后设置材质的图片和颜色后赋给图像控件

添加两个线性颜色变量“StartColor”、“TargetColor”

 添加一个自定义事件“SetHighlight”,如果是高亮就设置“StartColor”为默认颜色,“TargetColor”为高亮颜色

每帧判断“CurrentTime”是否小于1,如果小于1就让材质实例的颜色逐渐由“StartColor”向“TargetColor”过渡。由于在自定义事件“SetHighlight”中会重置“CurrentTime”,那么每次调用“SetHighlight”时就会让材质实例的颜色逐渐变化。

设置变量“CurrentTime”的默认值为1

8. 打开控件蓝图“WBP_CircularMenu”,添加一个画布面板和尺寸框控件,尺寸框大小为512*512并居中

继续添加覆层和图像控件,这里图像控件命名为“Image_Inner”并填充覆层控件

图像控件设置图像,并设置着色为黑色,不透明度为0.8

添加一个覆层控件,这里命名为“Overlay_Highlight”,勾选“是变量”,然后设置填充

再添加一个画布面板控件,这里命名为“CanvasPanel_Icon”,勾选“是变量”,然后设置填充

在图表中创建一个宏,这里命名为“CosValToAngle180”,用于将弧度制的余弦值转为角度

再创建一个宏,这里命名为“Angle360ToDir”

创建两个“纹理2D”数组类型的变量,这里命名为“IconArr”、“T_HighlightArr”,分别用于表示8个图标和8个贴图

回到“设计器”,选中“WBP_CircularMenu”,给“T_HighlightArr”添加8个元素

给“IconArr”也添加8个元素

在事件图表中添加如下节点,用于创建环形菜单的图标

此时效果如下

继续添加如下节点,用于创建高亮显示槽

此时界面效果如下

选中“Image_Inner”控件,填充设置为20

 选中画布面板,这里命名为“CanvasPanel_Menu”,勾选变量

在图表中新添加一个函数,这里命名为“GetMouseAngle360”,用于计算鼠标与中心点连线的角度

给该函数添加两个输出,分别表示鼠标与中心点连线的角度的距离

函数“GetMouseAngle360”逻辑如下

在事件图表中添加自定义事件“SetHighlight”如下

添加自定义事件“CancelLastHighlight”,用于恢复高亮前的效果

添加一个整数类型的变量“LastIndex”用于记录上次高亮的索引,默认值设置为-1

自定义事件“CancelLastHighlight”的完整逻辑如下

添加自定义事件“SwitchIndex”如下,该事件通过设置索引来控制哪个按钮高亮

在Tick中,每帧判断当前环形菜单是否已经打开(可见),如果打开了菜单就根据当前鼠标的位置来决定环形菜单中哪个按钮高亮显示

9. 打开玩家控制器,勾选“显示鼠标光标”

10. 在HUD中创建菜单并通过Tab键控制菜单显隐

最终效果如文章开头所示。

参考视频:

https://www.bilibili.com/video/BV17JLyzGEUX/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=1279114347cba25192f0e30b8cf0e95f

http://www.lryc.cn/news/2384028.html

相关文章:

  • Athena 执行引擎:在线服务计算的效率王者
  • 飞桨paddle ‘ParallelEnv‘ object has no attribute ‘_device_id‘【已解决】
  • Bert预训练任务-MLM/NSP
  • 微信小程序之Promise-Promise初始用
  • 准备好,开始构建:由 Elasticsearch 向量数据库驱动的 Red Hat OpenShift AI 应用程序
  • spring的注入方式都有什么区别
  • RNN神经网络
  • Linux | 开机自启动设置多场景实现
  • 杨校老师竞赛课之青科赛GOC3-4年级组模拟题
  • 设计杂谈-工厂模式
  • SC3000智能相机-自动存图
  • (高级)高级前端开发者指南:框架运用与综合实战
  • 【Java高阶面经:微服务篇】5.限流实战:高并发系统流量治理全攻略
  • 2025中青杯数学建模B题思路+模型+代码
  • 记录:uniapp 上线部署到微信小程序vendorjs包过大的问题
  • 如果教材这样讲--碳膜电阻、金属氧化膜电阻、金属膜电阻、保险丝电阻、绕线电阻的区别和用途
  • Vue 3.0中异步组件defineAsyncComponent
  • dedecms织梦全局变量调用方法总结
  • 新手到资深的Java开发编码规范
  • asp.net core 添加 EntityFrame
  • 微软全新开源的Agentic Web网络项目:NLWeb,到底是什么 ?
  • Idea出现 100% classes 等
  • 【学习笔记】计算机操作系统(五)—— 虚拟存储器
  • 构建基于全面业务数据的大数据与大模型企业护城河战略
  • centos系统redis-dump安装
  • 乘最多水的容器 | 算法 | 给定一个整数数组。有n条垂线。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
  • Python项目文件组织与PyCharm实践:打造高效开发环境
  • 【Java高阶面经:数据库篇】19、分库分表查询困境:无分库分表键时的高效应对
  • spring中的BeanFactoryAware接口详解
  • Unity Hub打不开项目一直在加载