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

【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.xdnf.cn/news/571951.html

相关文章:

  • 现代计算机图形学Games101入门笔记(十九)
  • 汽车电子电气架构诊断功能开发全流程解析
  • Linux nbd 网络块设备(2)-内核实现
  • fork 和 写时拷贝
  • NV009NV010美光闪存颗粒NV011NV012
  • 【Elasticsearch】字段别名
  • el-radio-group 与 el-dropdown 一起使用时的注意事项
  • Pytorch基础操作
  • cookie跨域共享踩的坑
  • sqli-labs第十八关——POST-UA注入
  • 使用MATLAB输出1000以内所有完美数
  • MoManipVLA-北京邮电-2025.3.17-移动操控-未完全开源
  • UML 时序图 使用案例
  • PostGIS实现栅格数据导出PNG应用实践【ST_AsPNG 】
  • 乘“4”而上,进取不止|Aloudata 的变与不变
  • 【专四 | 2022年真题】LANGUAGE USAGE逐题总结
  • dedecms织梦全局变量调用方法总结
  • 【OCCT+ImGUI系列】009-Geom2d-Geom2d_AxisPlacement
  • 使用Jenkins部署nodejs前端项目
  • 开源Vue表单设计器FcDesigner中组件联动的配置教程
  • 中国地图上标注颜色的方法
  • 食品饮料行业AI转型趋势分析与智能化解决方案探索​
  • 实战5:个性化数字艺术生成与销售
  • 目标检测 Lite-DETR(2023)详细解读
  • 信息系统项目管理师考前练习3
  • 怎样用 esProc 生成定长时间窗口列表并统计
  • 【Java高阶面经:微服务篇】7. 1秒响应保障:超时控制如何成为高并发系统的“救火队长”?
  • esp32cmini SK6812 2个方式
  • redis--redisJava客户端:Jedis详解
  • WebFuture:在银河麒麟系统中如何无中间件为WebFuture绑定域名、SSL证书