【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
相关文章:

【UE5】环形菜单教程
效果 步骤 1. 下载图片资源:百度网盘 请输入提取码 提取码:fjjx 2. 将图片资源导入工程,如下 3. 新建3个控件蓝图,这里分别命名为“WBP_CircularMenu”、“WBP_Highlight”、“WBP_Icon” 4. 打开“WBP_Icon”,设置“所需” 添加…...

Athena 执行引擎:在线服务计算的效率王者
引言 在在线服务领域,计算任务呈现出独特的特性:一方面,数据量通常不会过于庞大,因为在线服务对耗时和响应速度有着严苛要求;另一方面,计算任务具有可控性,其大多并非由用户实时输入动态生成&a…...

飞桨paddle ‘ParallelEnv‘ object has no attribute ‘_device_id‘【已解决】
书借上回,自从我反复重装paddle之后,我发现了,只要pip list中有库,但是代码报错,那就是飞桨没把代码更新完全,只能自己去改源代码 我又遇到报错了: 根据报错信息,找到ParallelEnv报…...
Bert预训练任务-MLM/NSP
MLM MLM:Masked Language Mode:在每一个训练序列中以15%的概率随机地选中某个token进行MASK,当一个token被选中后,有以下三种处理方式: 80%的概率被[MASK],如my dog is hairy->my dog is [MASK]10%的概率修改为随机的其他token,如my dog …...

微信小程序之Promise-Promise初始用
我们来尝试使用Promise。 1、需求,做个抽奖的按钮, 抽奖规则: 30%的几率中奖,中奖会提示恭喜恭喜,奖品为10万 RMB 劳斯莱斯优惠券,没中奖会提示再接再厉。 2、先搭界面: <view class&qu…...

准备好,开始构建:由 Elasticsearch 向量数据库驱动的 Red Hat OpenShift AI 应用程序
作者:来自 Elastic Tom Potoma Elasticsearch 向量数据库现在被 “基于 LLM 和 RAG 的 AI 生成” 验证模式支持。本文将指导你如何开始使用。 Elasticsearch 已原生集成业内领先的生成式 AI 工具和服务提供商。欢迎观看我们的网络研讨会,了解如何突破 RA…...
spring的注入方式都有什么区别
目录 1. 构造器注入(Constructor Injection) 2. Setter 注入(Setter Injection) 3. 字段注入(Field Injection) 4. 接口注入(Interface Injection) 主要区别对比 最佳实践 总…...

RNN神经网络
RNN神经网络 1-核心知识 1-解释RNN神经网络2-RNN和传统的神经网络有什么区别?3-RNN和LSTM有什么区别?4-transformer的归一化有哪几种实现方式 2-知识问答 1-解释RNN神经网络 Why:与我何干? 在我们的生活中,很多事情…...

Linux | 开机自启动设置多场景实现
注:本文为“Llinux 设置开机自启”相关文章合辑。 略作重排,未整理去重。 如有内容异常,请看原文。 Linux 设置开机自启动的三种方法 幽夜卡尔 2022-10-22 一、在 /etc/rc.local 文件中添加自启动命令 编辑文件:执行以下命令&a…...

杨校老师竞赛课之青科赛GOC3-4年级组模拟题
1.山峰(程序填空)程序填空题 题目描述 编程画出山峰。 要求:两个正三角形,三角形边长分别是200、100,山峰的颜色为8号色。 int main() {// 绘制等边三角形(边长100):右转30度调整…...
设计杂谈-工厂模式
“工厂”模式在各种框架中非常常见,包括 MyBatis,它是一种创建对象的设计模式。使用工厂模式有很多好处,尤其是在复杂的框架中,它可以带来更好的灵活性、可维护性和可配置性。 让我们以 MyBatis 为例,来理解工厂模式及…...

SC3000智能相机-自动存图
1、需求:SC3000智能相机开机自动存图。相机自带的相机存储空间有限,预留存图需要开启SCMVS、并手动点存图。如果工人忘了开启则不会存图,导致生产严重失误! 2、方法:利用相机提供的FTP协议,将图自动存到本地。 1、在本地建立FTP服务器。 (1)win10默认开启了FTP服务器…...
(高级)高级前端开发者指南:框架运用与综合实战
当您已经掌握了HTML5、CSS3和JavaScript的基础知识后,接下来就是学习现代前端框架和性能优化的高级阶段。本文将重点介绍Vue.js/React的组件化开发、状态管理和路由配置,以及前端性能优化的核心技巧。通过丰富的代码示例和详细讲解,帮助您在实…...

【Java高阶面经:微服务篇】5.限流实战:高并发系统流量治理全攻略
一、限流阈值的三维度计算模型 1.1 系统容量基准线:压测驱动的安全水位 1.1.1 压力测试方法论 测试目标:确定系统在资源安全水位(CPU≤80%,内存≤70%,RT≤500ms)下的最大处理能力测试工具: 单机压测:JMeter(模拟10万并发)、wrk(低资源消耗)集群压测:LoadRunner …...

2025中青杯数学建模B题思路+模型+代码
本文将为大家带来2025年中青杯的选题建议,旨在十分钟内帮助大家快速了解每个题目具体难点、涉及模型等。初步预估赛题难度 A:B:C4:5:3初步预测选题人数 A:B:C2:1:0.6 首先是C题,忧郁症的双重防线:精准预测与有效治疗,这个题目涉及…...

记录:uniapp 上线部署到微信小程序vendorjs包过大的问题
问题: 在代码依赖分析图中,可以看到主包的容量已经超过了2M了,分包没有超! 根据网上的资料的解决方案,当前我已经做了以下相关的配置: 1.分包 2.在manifest.json的(mp-weixin)节点…...
如果教材这样讲--碳膜电阻、金属氧化膜电阻、金属膜电阻、保险丝电阻、绕线电阻的区别和用途
之前在设计一款电源时,参考手册上标明电阻选择为12Ω/3W,但是没有注明是什么类型的电阻,小白的我于是乎想当然的选了一款碳膜电阻,然后悲剧就这样形成了,电源在上电的瞬间,碳膜电阻竟然被烧坏了,比例还挺大…...
Vue 3.0中异步组件defineAsyncComponent
在大型项目中,组件的体积可能会随着项目规模的增加而变得庞大。为了优化性能,我们可以将应用拆分为更小的块,并仅在需要时从服务器加载相关组件,这样的组件称为异步组件。 在 Vue 3 中,可以使用 defineAsyncComponent…...
dedecms织梦全局变量调用方法总结
dedecms织梦的全局变量可以在/include/common.inc.php文件中看到,此文件内定义了大量的全局变量,详细自己去看看。 如果我们要实用dedeCMS织梦全局变量该如何调用: 第一种单独调用: {dede:global.变量名 /},注意闭合…...
新手到资深的Java开发编码规范
新手到资深的开发编码规范 一、前言二、命名规范:代码的 “第一印象”2.1 标识符命名原则2.2 命名的 “自描述性” 原则2.3 避免魔法值 三、代码格式规范:结构清晰的视觉美学3.1 缩进与空格3.2 代码块规范3.3 换行与断行 四、注释规范:代码的…...

asp.net core 添加 EntityFrame
1:Nuget 引入程序集 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore.SqlServer.Design Microsoft.EntityFrameworkCore.Tools 2:执行脚本 Scaffold-DbContext "Data Source.;Initial Ca…...

微软全新开源的Agentic Web网络项目:NLWeb,到底是什么 ?
目录 1、背景 2、NLWeb是什么? 3、NLWeb是如何工作的? 3.1 技术原理 3.2 对发布者的价值 3.3 核心团队与合作伙伴 4、快速入门指南 5、延伸阅读 Agentic:Agent的形容词,Agentic指系统由大型语言模型(LLM&#…...

Idea出现 100% classes 等
总是误点出来,每次又忘了怎么消除,在这里记录一下。 出现这样: 操作idea界面的:点击View->Tool Windows ->Coverage,然后关掉...

【学习笔记】计算机操作系统(五)—— 虚拟存储器
第五章 虚拟存储器 文章目录 第五章 虚拟存储器5.1 虚拟存储器概述5.1.1 常规存储管理方式的特征和局部性原理5.1.2 虚拟存储器的定义和特征5.1.3 虚拟存储器的实现方法 5.2 请求分页存储管理方式5.2.1 请求分页中的硬件支持5.2.2 请求分页中的内存分配5.2.3 页面调入策略 5.3 …...
构建基于全面业务数据的大数据与大模型企业护城河战略
引言:数据与AI驱动的专精企业未来 在数字化浪潮和人工智能技术飞速发展的今天,对于“专精特新”型企业而言,如何利用自身积累的深厚行业知识和独特的业务数据,结合大数据分析与大模型能力,构建难以被复制的竞争壁垒&a…...
centos系统redis-dump安装
1. Ruby 环境 Redis-dump 是一个 Ruby 工具,需先安装 Ruby 和 RubyGems。 安装依赖: sudo yum install -y curl gpg2 gcc-c patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf aut…...

乘最多水的容器 | 算法 | 给定一个整数数组。有n条垂线。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
在我们日常生活中,蓄水似乎是一个极为朴素的物理行为:两堵墙之间,注入水,看谁能装得更多。可如果换个角度,从算法的视角去看这个问题,它会变得怎样?你是否意识到,这样一个简单的问题…...
Python项目文件组织与PyCharm实践:打造高效开发环境
# Python项目文件组织与PyCharm实践:打造高效开发环境 在Python编程的世界里,合理组织项目文件是提升代码质量、增强可维护性以及促进团队协作的关键。同时,借助强大的集成开发环境(IDE)——PyCharm,我们能…...

【Java高阶面经:数据库篇】19、分库分表查询困境:无分库分表键时的高效应对
一、分库分表下的无分片键查询困境 在分布式数据库架构中,分库分表通过分片键(如买家ID)将数据分散存储,显著提升了单表性能和系统扩展性。然而,当业务需要从非分片键维度(如卖家ID)进行查询时,传统架构暴露出以下核心问题: 1.1 跨分片扫描的性能灾难 数据分散性:以…...

spring中的BeanFactoryAware接口详解
一、接口定义与核心作用 BeanFactoryAware 是 Spring 框架提供的一个回调接口,允许 Bean 在初始化阶段获取其所属的 BeanFactory 实例。该接口定义如下: public interface BeanFactoryAware {void setBeanFactory(BeanFactory beanFactory) throws Bea…...