Unity转Unreal5从入门到精通之UMG的使用

news2025/1/11 12:49:47

前言

UMG (Unreal Motion Graphics UI Designer)是Unreal种的可视化 UI 工具。它就类似于Unity中的UGUI,可用于为用户创建游戏内 HUD、菜单和其他与界面相关的图形。 UMG 的核心是UI控件。它可用于创建UI界面(按钮、复选框、滑块、进度条等)。
在这里插入图片描述

快速入门

我们今天通过一个实战来讲解UMG的使用,我们来做一个游戏的血条,能量条和弹夹的实时更新的Demo,我们就基于官方FirstPlayer第一人称射击游戏的demo来做即可,这样我们就可以只关注UMG相关的逻辑。

UMG的控件可以使用控件蓝图进行编辑,并具有以下两个选项卡进行编辑:
“设计器”选项卡允许您直观地布置界面和基本功能。
在这里插入图片描述
“图表”选项卡提供所使用的小部件背后的功能。
在这里插入图片描述

新建UI控件蓝图

我们新建一个HUD的控件蓝图
在这里插入图片描述
这个UMG的设计器,就类似Unity中的UGUI画布操作是一样的
左侧的控制器菜单栏里面,可以找到画布,按钮,文本,滑动条,还有布局管理器等等
在这里插入图片描述
我们先新建一个画布,大小拉到1920x1080
先来做左上角的血条能量条
新建一个水平框,即UGUI中的HorizontalLayout,是一个布局管理器,
然后里面添加两个竖直框,一个放两个文本,一个放两个进度条
分别修改名字为Health和Energy
修改锚点为左上角
在这里插入图片描述
然后再屏幕右上角添加一个弹夹数量Ammo的文本框
在这里插入图片描述
好了,UMG的设计先保持这样

添加UMG到屏幕上

我们刚才创建好的UI,如何添加到运行时屏幕上呢?
在Unity中,我们可以直接添加到场景中,当然也可以运行时动态克隆出来。
在Unreal中,我们的UMG只能运行时动态创建出来。那么接下来我们来看下如何创建UMG到屏幕上。
在这里插入图片描述
1.打开BP_FirstPersonPlayerController,它是我们的第一人称控制器,是一个控制玩家运动的蓝图。
2.我们在原有逻辑的基础上,从EventBeginPlay后面添加新逻辑
添加节点CreateWidget,Class选择我们新创建的HUD
3.然后使用Promoted Variable,把画布提升为变量,方便后面Player和HUD的交互
4.使用Add to ViewPort,把HUD添加到屏幕上
现在运行,我们就能看到屏幕上出现了我们新建的HUD的UI界面
在这里插入图片描述

HP,MP更新

我们找到BP_FirstPersonCharacter蓝图,他是我们的第一人称的实体类,我们需要给我们的角色添加Health,Energy,Ammo之类的属性

在事件图表中的变量中添加我们需要的属性
在这里插入图片描述
然后在蓝图的图表中,添加Health和Energy的变量逻辑
我们假设跳跃需要能量,那么每跳一次,就让Energy的值减0.25
在这里插入图片描述
然后是Health血量的逻辑,因为我们没有被攻击的路基,那么我们就使用按键来模拟,比如我们按下键盘的F键,然后扣血0.25
在这里插入图片描述
好了,完成后,蓝图如下所示:

在这里插入图片描述

Ammo更新

打开武器蓝图BP_Weapon_Component。它是控制我们的枪射击的蓝图
打开后,我们在事件图标中找到EnhanceinputAction IA_Shoot节点,它是接受我们的射击事件的,即点击鼠标左键。
我们在点击射击后,添加一个if判断,即Character的Ammo数量是不是>0,是的话才能射击,如下所示:
在这里插入图片描述
在节点的最后,即射击完毕后,发射完小球,对Character的Ammo减1,代表弹夹数量减一

UMG中添加Charater引用

为了方便在UMG中实时获取玩家的Health值和Energy的值,我们需要在UMG的蓝图中,设置Character的引用。
在这里插入图片描述
注意:
这里GetPlayer Character节点,是获取场景中第一个PlayerCharacter即玩家实体
在这里插入图片描述
不要选错了GetPlayerController,因为这俩拼写有点相似。
在这里插入图片描述
但是我们这里可能会好奇,这俩有什么不一样?
包括蓝图也有两个,分别是
BP_FirstPersonCharacter和BP_FistPersonPlayerController
这俩是由区别的如下:
Character
Character是继承自Pawn,并拥有了四处走动的功能。就是一个人形生物
我们可以使用Character来制作,第一人称人,第三人称人,野怪,巡逻兵等
PlayerController
PlayerController是一个Controller,是一个玩家控制器,控制人物运动的。
还有AIController是AI控制的运动类,PlayerController是玩家手动控制的运动类

属性绑定

一些都准备就绪了,接下来我们对UMG中的属性进行绑定
点击HPProgress,在进度百分比中,点击绑定,选择MyCharacter中的Health
在这里插入图片描述

点击MPProgress,在进度百分比中,点击绑定,选择MyCharacter中的Energy

在这里插入图片描述
点击AmmoText,选择绑定,添加自定义绑定,这是会闯将一个控件蓝图,即AmmoText控件的一个事件绑定,我们可以在里面添加Text文本框的更新事件。
GetAmmoText就是绑定的事件函数
ReturnNode就是返回值,返回子弹数量/弹夹总数,如15/25
在这里插入图片描述
我们现在要做的就是在这个函数体内,获取玩家的Ammo数量和MaxAmmo数量,然后把他们拼接成 15/25的形式。
由于我们已经有MyCharacter的引用,所以很容易拿到Ammo和MaxAmmo,接下来只要拼接就可以了。
如下所示:

好了,接下来我们 运行来看下效果
我们可以看到,当发射子弹是,Ammo的弹夹数量显示发生了变化
当跳跃的时候,Energy能量发生了变化
当点击F按键的时候,Health血条也发生了变化
在这里插入图片描述
好了,这个UMG的基础篇介绍就到这里,希望对你有所帮助

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

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

相关文章

HiveSQL实战——大数据开发面试高频SQL题

查询每个区域的男女用户数 0 问题描述 每个区域内男生、女生分别有多少个 1 数据准备 use wxthive; create table t1_stu_table (id int,name string,class string,sex string ); insert overwrite table t1_stu_table values(4,张文华,二区,男),(3,李思雨,一区,女),(1…

linux -- Git基础使用

git是什么 简单说来Git是一个开源的分布式版本控制系统,那么什么是分布式呢,就是每个开发者拥有完整的本地仓库副本,包括所有历史记录和分支,可以独立工作,并通过合并来同步变更。 git优点 速度极快 Git在合并、分…

嵌入式 - 什么是数字晶体管

What is a digital transistor? 数字晶体管是一种集成电阻器的双极晶体管。 A digital transistor is a bipolar transistor that integrates resistors. Concerning internal resistor R1 / 关于内部电阻 R1 R1 的作用是通过将输入电压转换为电流来稳定晶体管的工作。 如果…

【秋招笔试】8.17京东秋招第二场(后端岗)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

Nginx:高效HTTP服务器与反向代理

Nginx:高效HTTP服务器与反向代理 1、核心特点2、应用场景 💖The Begin💖点点关注,收藏不迷路💖 Nginx,一个开源的HTTP服务器与反向代理工具,因其高性能、低资源消耗而备受推崇。以下是Nginx的几…

Python 全栈系列261 使用apscheduler

说明 任务可以分为两种: 1 静态(存量)任务2 动态(增量)任务 对于静态任务来说,一般可以事先分好大小均匀的若干block任务,这时候比较强调使用分布式系统进行快速处理;对于动态任务来说,主要按时间区块大小划分。对于…

[JAVA] Java中如何使用throws语句声明异常类型

如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常 — throws语句用在方法定义时声明该方法要抛出的异常类型 public void method() throws Exception1,Exception2,...ExceptionN{//可能产生异常的代码 }…

LVS配置

基础介绍 http://t.csdnimg.cn/Lv5Byhttp://t.csdnimg.cn/Lv5By 部署NAT模式集群案例 实验环境 主机名 IP vip 角色 node1 192.168.0.100 172.25.254.100 调度器( VS ) node1 192.168.0.101 , GW 192.168.0.100 \ 真实服务器&#…

HarmonyOS开发案例:创建全局自定义组件复用池-BuilderNode

介绍 本示例是全局自定义组件复用实现的示例代码,主要讲解如何通过BuilderNode创建全局的自定义组件复用池,实现跨页面的组件复用。 效果图预览 使用说明 继承NodeController,实现可复用的NodeItem组件。使用单例模式创建NodePool组件复用…

leetcode算法题之N皇后

N皇后也是一道很经典的问题,问题如下: 题目地址 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你…

2:html:基础语法2

目录 2.1图像的一些注意点 2.2表格 2.2.1基本的表格 2.2.2表头与边框 2.3列表 2.3.1无序列表 2.3.2有序列表 2.4块 2.4.1块级元素 2.4.2内联元素 2.1图像的一些注意点 在上一篇中,我们已经知道了怎么样去将图片运用到我们的网站中,但是这里还…

荣耀Magicbook x14 扩容1TB固态

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 固态硬盘规格 在官网查看加装固态硬盘的接口规格 https://www.honor.com/cn/laptops/honor-magicbook-x14-2023/ https://club.honor.com/cn/thread-2847379…

XYplorer v26.30.0200绿色版

软件介绍 XYplorers是一款多标签文件管理器,支持多标签页栏,浏览文件管理时就跟使用Chrome之类的浏览器感觉一般,从浏览方便性,和切换滑顺程度,要比原本Windows10的Explorer文件管理器要得多。可以大部分程度上替代系…

树莓派5环境配置笔记 新建虚拟python环境—安装第三方库—配置Thonny解释器

树莓派5虚拟环境配及第三方库的安装🚀 在完成了树莓派的系统下载和各项基础配置之后进入到了,传感器开发部分,在测试传感器开发之前我打算先安装一下自己需要的库,但是在我直接在系统的根目录下运行pip命令的时候总会报环境错误&a…

sudo执行带重定向命令时仍提示无权限:Permission denied问题详解以及linux里的更高效下载命令mwget安装和使用效率对比

一、sudo执行带重定向命令时仍提示无权限:Permission denied问题详解 小问题,在此记录一下,有时在shell下执行命令重定向到文件时提示无权限-bash: temp_20181015.log: Permission denied,而且加sudo执行依提示无权限,…

CDD数据库文件制作(四)——Data Type(0x22/0x2E)

文章目录 1、新建Data Type步骤2、Data Types类型2.1 raw value2.1.1 ASCII读取和写入:零件号…2.1.2 “多字节的十六进制” 读取和写入:密钥,种子…2.1.3 “多字节的十进制” 读取和写入:参数标定和显示2.2 text table2.3 Linear2.3.1 分辨率和偏移量非1和0的读取和写入2.…

linux:进程优先级、环境变量、地址空间

进程优先级 什么叫进程优先级? 进程优先级是指进程获取某些资源的先后顺序 上文中的task_struct,也叫进程控制块(PCB),本质上是结构体,我们的优先级就被写在结构体里面(内部字段)…

Python | Leetcode Python题解之第345题反转字符串中的元音字母

题目&#xff1a; 题解&#xff1a; class Solution:def reverseVowels(self, s: str) -> str:def isVowel(ch: str) -> bool:return ch in "aeiouAEIOU"n len(s)s list(s)i, j 0, n - 1while i < j:while i < n and not isVowel(s[i]):i 1while j …

模型 神经网络(通俗解读)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。仿脑智能&#xff0c;深度学习&#xff0c;精准识别。 1 神经网络的应用 1.1 鸢尾花分类经典问题 神经网络的一个经典且详细的经典应用是鸢尾花分类问题 。主要是通过构建一个神经网络模型来自动区分…

【数学建模备赛】Ep04:假设性检验

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、假设性检验&#xff1a;☀️☀️☀️1. 整体步骤2. 例子① 确定原假设和备择假设② 根据要检测的量构造一个分布③ 画出分布的概率密度图④ 给出一个置信水平β⑤ 最常见的置信水平&#xff08;95 %&#xff09;⑥…