77. UE5 RPG 创建角色的技能栏

news/2024/9/24 12:20:25/

在前面的文章里,我们实现了角色属性技能和场景。接下来,我们要优化角色显示UI,在屏幕底部显示角色血量,蓝量,技能和经验值。

创建新的用户控件

选择创建新的控件蓝图
在这里插入图片描述
父类为我们自定义的RPGUserWidget,这是我们增加了一些可以获取数据的C++类
在这里插入图片描述
因为它只需要在一部分区域显示,我们将它的尺寸修改为自定义
在这里插入图片描述
修改尺寸
在这里插入图片描述
添加一个覆层,命名为Overlay_Root
在这里插入图片描述
我们要左右两侧分别显示血量和蓝量,中间显示技能,这是使用水平框分割,命名为BaseBox
在这里插入图片描述
修改它的对齐为填充,这样,它就可以填充整个控件
在这里插入图片描述
接着在下面添加三个水平框,修改命名,方便后续维护
在这里插入图片描述
接着我们将其设置为填充,血量和蓝量框设置0.2,中间技能设置0.6,填充会按数值计算,将内部数值加起来,然后查看比例设置宽度占比
在这里插入图片描述
效果如下
在这里插入图片描述
技能框里面还要区分主动技能和被动技能,这里添加两个垂直框将其区分开
在这里插入图片描述
主动技能填充设置0.9, 被动技能设置0.1,效果如下
在这里插入图片描述
接着我们在主动技能这里增加三个框,上面显示名称的垂直框,下面为显示技能图标的水平框
在这里插入图片描述
修改名称,方便查看
在这里插入图片描述
修改它们的填充
在这里插入图片描述
接着,在顶部的盒子内再增加两个水平框,第一个水平框用于显示下面为主动技能,另一个用于提示玩家技能键位
在这里插入图片描述
它们两个设置为填充,然后对等分空间即可
在这里插入图片描述
到这里,我们将区域划分完成,以下是完整效果,后面我们将填充图标和文字
在这里插入图片描述

填充图标

我们将之前制作的血量拖入
在这里插入图片描述
将其设置为填充
在这里插入图片描述
蓝量进行同样的操作,结果如下
在这里插入图片描述
接着,在OffensiveText下面添加一个文本
在这里插入图片描述
按照以下设置居中
在这里插入图片描述
然后修改样式,有一个不错的效果
在这里插入图片描述
然后在被动技能这边,添加两个垂直框
在这里插入图片描述
将其设置为填充,一个0.2,显示文字,一个0.8,用于装填两个被动技能
在这里插入图片描述
将主动技能的文字复制一下,修改文字内容
在这里插入图片描述
接下来,我们设置按键的键位提示文字,添加6个垂直框,并设置填充
在这里插入图片描述
将主动技能文本框赋值,并修改显示内容
在这里插入图片描述
接着在显示技能的区域创建六个对于的垂直框,用于后续添加技能图标
在这里插入图片描述
接着在被动技能框里增加三个垂直框,修改名称,两个用于放置被动技能,一个用于填充空白
在这里插入图片描述
将它们都设置为填充,然后将填充空白的填充值修改为0.6
在这里插入图片描述

创建技能控件

创建一个SpellGlobes文件夹,存储我们接下来的用户控件
在这里插入图片描述
基于以前创建的用户控件基类,创建一个新的用户控件蓝图类
在这里插入图片描述
命名为WBP_SpellGlobe
在这里插入图片描述
这个内容的创建和我们之前制作血瓶和蓝瓶有相似之处,文章在8. UE5 RPG创建UI(上),区别在于技能不是进度条,所以,我们按照之前的做法,将进度条去掉,修改为图标即可。
我们将基础的制作完成
在这里插入图片描述
技能多了一个冷却功能,我们可以使用一个图去实现冷却,也可以使用文字提示冷却剩余时间,这里我们使用文字表示。
在这里插入图片描述
接着我们实现一个函数,用于在技能进入冷却时,将背景变暗
在这里插入图片描述

将技能控件添加组上面

接下来,我们将技能添加到技能组件里面,填充所有的主动技能和被动技能,并将其设置好填充,调整技能内的padding
在这里插入图片描述
接下来,我们还需要解决一个问题,就是如果技能为空的时候,我们将技能背景去掉,法线它是一片白
在这里插入图片描述
这不是我们想要的效果,我们增加一个函数用于其在没有技能设置时,颜色为完全透明,添加一个透明的笔刷,用于修改笔刷的透明度
在这里插入图片描述

将其颜色修改为完全透明
在这里插入图片描述
在函数内部将技能图标和背景都设置为透明的笔刷
在这里插入图片描述
在构造时调用查看效果
在这里插入图片描述
我们能清空了,肯定需要还要能够更新,我们增加一个函数用于设置它的需要显示的笔刷,我们增加两个参数可以传入图标和背景
在这里插入图片描述
在构造时调用测试函数
在这里插入图片描述
效果又恢复回来了
在这里插入图片描述
现在的效果,就变成了空的技能,用于显示
在这里插入图片描述

应用新的技能栏

我们创建了新的技能栏,接下来,我们想替换默认的那两个球。
打开WBP_Overlay,将我们之前显示血量的球给删除掉
在这里插入图片描述
将它拖入进来
在这里插入图片描述

修改它的锚点
在这里插入图片描述
修改位置和对其
在这里插入图片描述
效果就是对其底部进行一些偏移
在这里插入图片描述
接着,我们需要修改Controller的设置,将之前的设置删除
在这里插入图片描述
修改为设置技能栏的controller
在这里插入图片描述
接着在技能栏的事件里面对血量UI和蓝量UI进行设置
在这里插入图片描述
法线血可以正常掉,没问题
在这里插入图片描述

制作经验条

设置技能的UI我们告一段落,我们还缺少一个经验条用来显示角色当前获取到的经验值。
经验条也是一个进度条,我们可以在进度条的文件夹内新创建一个蓝图控件。
在这里插入图片描述
命名为WBP_XPBar
在这里插入图片描述
先修改尺寸为自定义,定义宽880 高50
在这里插入图片描述
添加一个Overlay
在这里插入图片描述
添加一个图像作为边框,设置填充
在这里插入图片描述
接着添加一个进图条,用于表现经验进度,注意调整好填充
在这里插入图片描述
修改它的背景色和填充图
在这里插入图片描述
修改进度百分比
在这里插入图片描述
查看效果
在这里插入图片描述
接下来就考虑将其放置在技能框里,但是技能框的长度好像无法容纳它,我们直接放到WBP_Overlay里面,方便调整
在这里插入图片描述
我们将其拖入overly中,它默认很小
在这里插入图片描述
我们将其调整为编辑时的大小
在这里插入图片描述
修改其的锚点,中间最下方
在这里插入图片描述
然后修改对齐和位置
在这里插入图片描述
最终效果如下
在这里插入图片描述
然后运行测试效果
在这里插入图片描述


http://www.ppmy.cn/news/1474181.html

相关文章

怎样在 PostgreSQL 中优化对 UUID 数据类型的索引和查询?

文章目录 一、UUID 数据类型概述二、UUID 索引和查询的性能问题三、优化方案(一)选择合适的索引类型(二)压缩 UUID(三)拆分 UUID(四)使用覆盖索引(五)优化查询…

C++语言学习精简笔记(包含C++20特性)

目录 1 C新语法C与CC编译运行String编程范式C基础类型**自动类型推导**统一对象初始化:Uniform Initialization 控制结构if语句for语句switch语句namespace 2 函数函数声明形式参数函数参数传递的选择函数返回值的选择 函数重载 Lambda表达式函数的定义和申明生存期…

C# 中使用模式匹配 备忘

模式匹配# 要使用模式匹配,首先要了解什么是模式。在使用正则表达式匹配字符串时,正则表达式自己就是一个模式,而对字符串使用这段正则表达式进行匹配的过程就是模式匹配。而在代码中也是同样的,我们对对象采用某种模式进行匹配的…

DHCP与TCP的简单解析

目录 一、DHCP 1.1 DHCP概述 1.2 DHCP的优势 1.3 DHCP的模式与分配方式***** 1.3.1 DHCP的模式:C/S模式(客户机与服务器模式) 1.3.2 DHCP的分配方式 1.4 DHCP的租约过程及原理 1.4.1 DHCP的工作原理***** 1.4.2 更新租约原理***** …

场景管理分析平台介绍

在数字化浪潮的推动下,数据已成为企业决策的重要依据。特别是在智能驾驶、虚拟现实和物联网等领域,场景数据的高效管理和利用至关重要。在智能驾驶领域面对海量的场景数据,如何高效处理、精准分析,并将其转化为有价值的决策支持&a…

Zynq系列FPGA实现SDI视频编解码+UDP以太网传输,基于GTX高速接口,提供3套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本博已有的以太网方案本博已有的FPGA图像缩放方案1G/2.5G Ethernet PCS/PMA or SGMII架构以太网通信方案AXI 1G/2.5G Ethernet Subsystem架构以太网通信方案本方案的缩放应用本方案在Xilinx--Kintex系列…

Redisson分布式锁、可重入锁

介绍Redisson 什么是 Redisson?来自于官网上的描述内容如下! Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端(In-Memory Data Grid)。它不仅提供了一系列的 redis 常用数据结构命令服务,还提供了…

Flutter【组件】标签

简介 flutter 标签组件。标签组件是一种常见的 UI 元素,用于显示和管理多个标签(或标签集合)。 github地址: https://github.com/ThinkerJack/jac_uikit pub地址:https://pub.dev/packages/jac_uikit 使用方式&…