23. UE5 RPG制作属性面板(一)

随着角色的属性越来越多,我们不能每次都进行showdebug abilitysystem进行查看,而且玩家也需要查看角色属性,所以需要一个查看玩家角色属性的面板。
在前面,我们创建三种类型的属性

  1. Primary Attributes(主要属性)可以进行加点,装备提供属性点等
  2. Secondary Attributes (次级属性)无法加点,基于主要属性或者其它次级属性设置值
  3. Vital Attributes (至关重要的属性)主要是血量和蓝量

我们制作的面板就需要将这三大块区分开来,主要属性增加加点按钮,次级属性只做显示,重要属性在显目的位置显示。

分析实现属性面板需要创建的Widget

考虑到属性框的复用性,尽可能重复使用资源。我们至少需要创建四个Widget用于展示

  1. 创建一个用于显示属性数值的Widget,我们命名为WBP_FramedValue
  2. 创建一个显示一行内容并能够显示属性名称和数值的Widget,命名为WBP_TextValueRow
  3. 创建一个可以先属性名称和数值,并可以添加点击按钮的Widget,命名为WBP_TextValueButtomRow
  4. 创建一个包含所有显示内容的Widget,命名为WBP_AttributeMenu
    接下来,我们将按照此步骤,一个个的进行创建。

在这里先提前说一下,创建的Widget都是通过之前制作的Widget基类创建的,如果第一次看的小伙伴,记得翻一下我之前的文章
在这里插入图片描述

创建WBP_FramedValue

先创建一个WBP,将面板调整成所需,按照内部需要调整大小
在这里插入图片描述
然后,添加一个尺寸框
在这里插入图片描述
将此设置为变量,设置高度和宽度重载,这样,我们可以实现通过参数修改它的大小
在这里插入图片描述
然后创建两个浮点参数,用于设置它的宽高,并连接蓝图,修改宽度和高度重载,参数别忘记设置默认值
在这里插入图片描述
我们可以选中这些节点,右键将其合并一个函数
在这里插入图片描述
重新命个名,就简洁了很多
在这里插入图片描述
添加一个覆层,这个覆层的作用主要是下面的UI可以在上面重复叠加,我们就可以将背景,按钮都叠加到上面。
在这里插入图片描述
在覆层下面添加一个Image,作为背景
在这里插入图片描述
背景设置为填充,这样,背景就可以填满整个覆层
在这里插入图片描述
图像默认颜色为白色,我们可以设置笔刷Brush来修改它的颜色,也可以修改颜色值,这里我添加了一个ui材质来修改背景颜色
在这里插入图片描述
考虑到后续有修改需求,我们设置使用蓝图去修改它的背景,我们可以在变量上面设置它的brush
在这里插入图片描述
背景添加完成以后,我们接着添加一个边框,接着在下面添加一个边框,同样的设置填充
在这里插入图片描述
在这里插入图片描述
边框直接设置了一张边框图片,然后设置为Border(边界,绘制为3x3边界,侧边和中部为空)
在这里插入图片描述
最后添加一个文本,用于显示内部的内容
在这里插入图片描述
设置文本对齐,修改字体,设置阴影等。
在这里插入图片描述
实现完成的效果如下
在这里插入图片描述

创建WBP_TextValueRow

和之前一样,先创建尺寸框,设置可以自定义尺寸
在这里插入图片描述
大小设置为所需,尺寸框宽度高度重载
在这里插入图片描述
增加两个变量,设置宽高,宽度设置为450,高度为60,用于显示属性名称和数值
在这里插入图片描述
添加一个水平框,用于承载文本 数值等,水平框默认是左右上下对齐的。
在这里插入图片描述
先添加一个文本
在这里插入图片描述
文本设置水平向左对齐,垂直居中对齐
在这里插入图片描述
显示效果如下
在这里插入图片描述
修改一下字体,大小,字间距,还有加了描边效果
在这里插入图片描述
文本修改完成,接着将前面制作的WBP_FramedValue 添加进来
在这里插入图片描述
修改尺寸为填充,水平对齐向右对齐,垂直居中对齐
在这里插入图片描述
效果如下
在这里插入图片描述
后面添加一个间隔区,用于和后面在主要属性哪里添加增加属性按钮隔开
在这里插入图片描述
设置一下间隔区的大小
在这里插入图片描述

接着添加一个命名的插槽,这个插槽可以在后面添加按钮使用
在这里插入图片描述
这个插槽会在制作后面的Widget的时候使用,最终效果如下
在这里插入图片描述

创建WBP_TextValueButtomRow

在创建WBP_TextValueButtomRow这里,我们不需要基于c++创建,而是基于上面的WBP_TextValueRow创建,然后在插槽里面添加一个按钮。
在这里插入图片描述
创建打开会显示WBP_TextValueRow的界面,左侧发现插槽给我们暴露了出来
在这里插入图片描述
思考了一下,按钮会经常使用,在不同的地方,我们可以考虑创建一个按钮的Widget,然后在相同的按钮我们只需要使用一套即可。
创建一个新的控件蓝图,命名为WBP_Button
在这里插入图片描述
老套路,先添加一个尺寸框,用来设置尺寸
在这里插入图片描述
屏幕尺寸修改为所需,高度宽度设置重载
在这里插入图片描述
接着编写蓝图增加两个变量去控制可以修改尺寸
在这里插入图片描述
在下面添加一个覆层
在这里插入图片描述

覆层下面添加一个图像,用于设置背景,这里默认的用于显示边框
在这里插入图片描述

修改它的图像,以及大小,设置对齐方式
在这里插入图片描述
增加一个蓝图,修改图像的笔刷,方便个性化定制,记得设置变量的默认值
在这里插入图片描述
接着添加一个按钮
在这里插入图片描述
设置对齐,在样式这里普通添加图像,主要是为了看效果
在这里插入图片描述

效果如下
在这里插入图片描述
接着,我们增加在蓝图可以设置按钮的样式,创建一个按钮样式节点,我们需要修改Normal Hovered Pressed Disabled四种情况下的样式。
在这里插入图片描述
将四个状态笔刷都设置为变量,可以通过变量设置默认值以及修改
在这里插入图片描述
我们需要在按钮上面显示图标,那么在按钮上添加一个文本
在这里插入图片描述
设置一下文本样式,游戏不需要修改的,要在属性上面设置
在这里插入图片描述
增加一个蓝图,修改文本
在这里插入图片描述
在蓝图增加一些变量对文本进行初始化
在这里插入图片描述
如果找不到系统默认的Robot的字体,需要开启显示引擎内容
在这里插入图片描述

记得把变量上的眼睛点开,我们才能够在蓝图对它的属性进行修改
在这里插入图片描述
记得将蓝图折叠成函数,这样更美观
在这里插入图片描述
到这里按钮的widget的样式就算做完了,我们打开WBP_TextValueButtomRow,在插槽下面添加一个覆层,然后在覆层下面添加一个制作的按钮
在这里插入图片描述
按钮的对齐设置一下,下面就可以看到我们之前设置的变量属性,可以直接修改。
在这里插入图片描述
最终,也实现了效果
在这里插入图片描述

创建WBP_AttributeMenu

我们将所需的Widget部件都创建完成了,接下来,要使用它们进行拼合,制作出来我们所需要的面板。

接着创建一个新的widget,命名为WBP_AttributeMenu
在这里插入图片描述
屏幕尺寸修改为所需
在这里插入图片描述
老套路,加个尺寸框
在这里插入图片描述
设置一下尺寸框的名称,修改一下宽高
在这里插入图片描述
在尺寸框下面添加一个覆层
在这里插入图片描述

在覆层下面添加一个图像,作为背景使用
在这里插入图片描述
设置一下背景
在这里插入图片描述
接着在覆层下面添加一个图像作为边框使用
在这里插入图片描述
样式为现在这样
在这里插入图片描述
添加一个包裹框,包裹住接下来添加的内容,包裹框的功能在于能够自动换行,我们就可以在包裹框内拼ui了。
在这里插入图片描述
包裹框设置一下填充属性
在这里插入图片描述
修改一下字体样式,注意设置一下填充空白空间,这样,它能够独占一整行,你再放置内容,将会从新的一行开始显示。
在这里插入图片描述
接着再添加一个文本,会发现和之前的文本重叠在了一块
在这里插入图片描述
我们可以修改它的填充跨度,来实现强制换行
在这里插入图片描述
修改样式
在这里插入图片描述
样式如下
在这里插入图片描述
我们可以在文本中间添加间隔区节点,增加两行文字的间距
在这里插入图片描述
x尺寸设置的大点,能够占用一行即可,y尺寸按个人喜好调整
在这里插入图片描述
接下来,添加一个WBP_TextValueRow,用于显示角色剩余可加点数
在这里插入图片描述
在这里插入图片描述
有点长,我们记得把WBP_TextValueRow里面变量的眼睛打开,就可以在menu页面调整它的大小了
在这里插入图片描述
修改一下,显示就合理了
在这里插入图片描述
接着在下面添加四个,并修改一下宽度,调整一下节点顺序
在这里插入图片描述
效果如下
在这里插入图片描述
接下来,我们需要创建次级属性显示,首先创建一个次级属性的标题,可以直接复制主要属性的节点
在这里插入图片描述
添加一个尺寸框,作为次级属性的父节点,由于次级属性比较多,我们可以让它滚动起来
在这里插入图片描述

设置大小,和填充空白空间,对齐方式,它就能够居中对齐了。
在这里插入图片描述
在尺寸框下面添加一个滚动框,如果内部内容超过了滚动框的尺寸,将能够滚动查看。
在这里插入图片描述
在滚动框下面添加10个WBP_TextValueRow用于显示次级属性
在这里插入图片描述
我们会发现右侧也会出现滚动条,效果或许不好,我们后续再调。
在这里插入图片描述

添加关闭按钮

直接在外部的overlay下面添加一个WBP_Button即可实现对按钮的添加
在这里插入图片描述
修改属性,对齐到右下角,填充一下右下,和边缘有些距离
在这里插入图片描述
效果如下
在这里插入图片描述

到这里,大概得UI创建的差不多,后面将创建一些不通用的UI和函数修改属性名称和数值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见的OOM 问题的 6 种场景

今天跟大家一起聊聊线上服务出现 OOM 问题的 6 种场景,希望对你会有所帮助。 一、堆内存 OOM 堆内存 OOM 是最常见的 OOM 了。 出现堆内存 OOM 问题的异常信息如下: java.lang.OutOfMemoryError: Java heap space此 OOM 是由于 JVM 中 heap 的最大值,已经不能满足需求了…

资深测试总结,性能测试-常见并发问题+解决总结(最全)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、并发测试的定义…

vscode用SSH远程开发c语言

vscode配置远程 这里我使用虚拟机进行展示,首先需要你的虚拟机安装好ssh 没安装好就执行下面的命令安装并开启服务 sudo apt-get install ssh sudo service ssh start ps -e | grep sshvscode安装 remote-ssh扩展 点击左下角的远程连接,我这里已经连接…

【Hive】HIVE运行卡死没反应

Hive运行卡死 再次强调 hive:小兄弟,没想到吧,咱可不是随便的人。😄 那么,这次又遇见了hadoop问题,问题描述是这样的。 hive> insert into test values(1, nucty, 男); Query ID atguigu_202403241754…

图论基础|695. 岛屿的最大面积、1020. 飞地的数量、130. 被围绕的区域

695. 岛屿的最大面积 力扣题目链接(opens new window) 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0&#xff0…

C语言操作符和数据类型的存储详解

CSDN成就一亿技术人 目录​​​​​​​ 一.操作符 一.算数操作符: 二.位移操作符: 三.位操作符: 四.赋值操作符: 五.单目操作符: 六.关系操作符: 七.逻辑操作符: 八.条件操作符&…

【Redis】Redis 介绍Redis 为什么这么快?Redis数据结构Redis 和Memcache区别 ?为何Redis单线程效率也高?

目录 Redis 介绍 Redis 为什么这么快? Redis数据结构 Redis 和Memcache区别 ? 为何Redis单线程效率也高? Redis 介绍 Redis 是一个开源(BSD 许可)、基于内存、支持多种数据结构的存储系统,可以作为数据…

前端基础篇-前端工程化 Vue 项目开发流程(环境准备、Element 组件库、Vue 路由、项目打包部署)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 环境准备 1.1 安装 NodeJs 1.2 验证 NodeJs 环境变量 1.3 配置 npm 的全局安装路径 1.4 切换 npm 的淘宝镜像( npm 使用国内淘宝镜像的方法(最新) ) 1.5 查看镜像…

【C语言】——指针四:字符指针与函数指针变量

【C语言】——指针四:字符指针与函数指针变量 一、字符指针二、函数指针变量2.1、 函数指针变量的创建2.2、两段有趣的代码 三、typedef关键字3.1、typedef的使用3.2、typedef与define比较 四、函数指针数组 一、字符指针 在前面的学习中,我们知道有一种…

解码新时代内存架构:探秘数据在内存中的灵动驻足

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看,已成习惯 创作不易,多多支持! 随着信息技术的飞速发展,我们身处一个数据爆炸的时代。数据的处理和存储方式正日益成为技术革新的重要领域。在新时代的…

CSS时钟案例

文章目录 1. 演示效果2. 分析思路3. 代码实现 1. 演示效果 2. 分析思路 背景是表盘&#xff0c;不用自己制作然后用CSS的定位做时针&#xff0c;分针和秒针黑点用伪元素::after生成转动用animation实现 3. 代码实现 <!DOCTYPE html> <html lang"en">&…

Java学习笔记 | JavaSE基础语法05 | 方法

文章目录 0.前言1. 方法概述2. 方法的定义和调用2.1 无参数方法定义和调用2.2 带参数方法定义和调用1 带参数方法定义和调用2 形参和实参3 带参数方法练习 2.3 带返回值方法的定义和调用1 带返回值方法定义和调用2 带返回值方法练习13 带返回值方法练习24 带返回值方法练习3 3.…

Python学习从0到1 day18 Python可视化基础综合案例 1.折线图

我默记这段路的酸楚&#xff0c;等来年春暖花开之时再赏心阅读 —— 24.3.24 python基础综合案例 数据可视化 — 折线图可视化 一、折线图案例 1.json数据格式 2.pyecharts模块介绍 3.pyecharts快速入门 4.数据处理 5.创建折线图 1.json数据格式 1.什么是json 2.掌握如何使用js…

SqlServer找不到SQL Server Configuration Manager(配置管理)

1、Win键 R &#xff0c;输入 compmgmt.msc 2、找到Sql Server配置管理器

演讲嘉宾公布 | 智能家居与会议系统专题论坛将于3月28日举办

一、智能家居与会议系统专题论坛 智能家居通过集成先进的技术和设备&#xff0c;为人们提供了更安全、舒适、高效、便捷且多彩的生活体验。智能会议系统它通过先进的技术手段&#xff0c;提高了会议效率&#xff0c;降低了沟通成本&#xff0c;提升了参会者的会议体验。对于现代…

Deconstructing Denoising Diffusion Models for Self-Supervised Learning

开头说点题外话&#xff1a;这篇可谓是大咖云集啊&#xff0c;刘壮、谢赛宁、何凯明这些耳熟能详的名字&#xff0c;并且这篇论文一些人也觉得分析特别到位&#xff0c;不愧是大佬视角&#xff0c;配得上“解构”两个字&#xff1b;很巧的是&#xff0c;本科阶段的团队导师也是…

Web框架开发-Ajax

一、 Ajax准备知识:json 1、json(Javascript Obiect Notation,JS对象标记)是一种轻量级的数据交换格式 1 2 它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。…

计算机组成原理-5-输入输出系统

5. 输入输出系统 文章目录 5. 输入输出系统5.1 概述5.1.1 I/O系统的发展概况5.1.2 I/O系统的组成5.1.3 I/O设备与主机的连接5.1.4 I/O设备与主机传送信息的控制方式 5.2 I/O设备5.3 I/O接口5.4 控制方式5.4.1 程序查询方式5.4.2 程序中断方式5.4.3 DMA方式5.4.4 程序中断方式与…

RabbitMQ 01

01.定义 02.功能

apifox创建接口含中文字符报错的两种解决方案

针对apifox的含中文报错解决方法&#xff1a; 方法一&#xff1a;创建相应接口后&#xff0c;在设置中URL自动编码为WHATING。 方法二&#xff1a;直接将浏览器的url复制到apifox中&#xff0c;浏览器会自动解析配置中文转换路径。