UE5 学习笔记 FPS游戏制作30 显示击杀信息 水平框 UI模板(预制体)

文章目录

    • 一制作单条死亡信息框
      • 水平框的使用
        • 创建一个水平框
        • 添加子元素
        • 调整子元素顺序
        • 子元素的布局插槽
          • 尺寸
          • 填充
          • 对齐
        • 制作UI
      • 根据队伍,设置文本的名字和颜色
        • 声明变量
      • 将变量设置为构造参数
      • 根据队伍,设置文本的名字和颜色
      • 在构造事件中,获取玩家的引用,设置击杀者和被杀者的文本和颜色,设置武器图标
    • 二创建一个容器,让死亡信息自动排序
      • 创建KillInfoPanel蓝图,用来展示击杀信息
      • 编辑变量和方法
      • 把KillInfoPanel放到主UI蓝图Fpp_UI里
    • 三公共函数库生成随机的名字
    • 四使用GameMode的事件分发器,来处理死亡消息
      • 创建GameMode的事件分发器
      • 修改死亡方法,发出击杀消息
      • UI注册消息

一制作单条死亡信息框

水平框的使用

类似于Unity的horizontalLayout

创建一个水平框

需要先有一个画布组件
在面板里拖一个水平框出来
在这里插入图片描述

添加子元素

往里边拖入三个text

在这里插入图片描述
在这里插入图片描述

调整子元素顺序

点击子元素,使用箭头调整
在这里插入图片描述

子元素的布局插槽
尺寸

自动:根据元素内容自动控制大小
填充:填满整个水平框
后边会出现一个比例,它并不是填充多少,只有有多个填充模式的子元素时,他用来表示相对于其他元素,这个元素大多少倍,例如两个填充元素,设置为2和1,则第一个元素占2/3,第二个元素占1/3
在这里插入图片描述

填充

其实是边距
直接输入可以同时调四个边距
展开可以分别调整四个边距
在这里插入图片描述

对齐

这个元素在自己的槽位里的对齐方式,不是内部文本的对齐方式
在这里插入图片描述
图中为水平竖直都拉伸到最大,如果元素时图片,拉伸模式会破坏图片的比例

制作UI

新建一个UI蓝图,命名为WhoKillWho
新建一个尺寸框,在尺寸框下新建一个水平框
选中尺寸框,调整大小
在这里插入图片描述

根据队伍,设置文本的名字和颜色

画面中的大小没有变是因为我们在屏幕模式里,舞台右上角"填充屏幕"模式改成"所需",此时尺寸框变成我们需要的大小
在这里插入图片描述

选中水平框,添加两个文本框和一个图片,如下调整布局

在这里插入图片描述
最左侧文本框
在这里插入图片描述
中间的图片
在这里插入图片描述
右侧的文本框
在这里插入图片描述

声明变量

首先将两个文本框和一个图片修改一下名字,分别命名为KillerText,GunImage,KilledText,并设置为变量
在这里插入图片描述
然后声明五个变量 击杀者的名字和队伍,被杀者的名字和队伍,使用的武器
在这里插入图片描述

将变量设置为构造参数

首先UI蓝图没有构造函数,所谓构造参数是指别人调用“Create Widget”节点时,可以输入的参数
我们要把手动创建的五个参数设置为构造参数,只能一个一个设置,不能批量设置
选择一个参数,在他的变量栏里,选择可编辑实例和生成时公开
在这里插入图片描述

根据队伍,设置文本的名字和颜色

编写一个方法,这里编写了一个事件,是一样的
在这里插入图片描述

在构造事件中,获取玩家的引用,设置击杀者和被杀者的文本和颜色,设置武器图标

注意是构造事件,不是构造函数
在这里插入图片描述

二创建一个容器,让死亡信息自动排序

创建KillInfoPanel蓝图,用来展示击杀信息

教程里没有用VerticalBox,说是不能让新加入的显示到上变,改用统一网格面板
新建一个UI蓝图,改名为KillInfoPanel
添加一个"统一网格面板",重命名为Panel,指定是变量,不需要修改尺寸,因为这个我们要作为自定义UI放到Fpp_UI面板里
在这里插入图片描述
在这里插入图片描述

编辑变量和方法

变量:
Panel是UI设计面板传过来的统一网格
Slots,数据类型为统一网格插槽,用来管理子项的行列
ChildArray数组,类型为WhoKillWho这个UI的示例,他和Slot的意义不一样,它是用来调用自己的"从父项中移除"节点来删除自己的
MaxNum:统一网格里最多几条数据,设置默认值为3
在这里插入图片描述

方法:
三个方法,AddKillInfo用于添加一个新的击杀消息,ResetIndex用于对子元素重新排序,确保新加入的信息显示在最上,CheckMaxNum用于确保最多只有三条信息
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

把KillInfoPanel放到主UI蓝图Fpp_UI里

在用户创建里直接把自己创建的KillInfoPanel拖进来
在这里插入图片描述
调整锚点,对齐方式和大小到内容
对齐方式一定要对,确保尺寸扩展时会向左扩展
大小到内容一定要勾选,否则两项之间有空隙
在这里插入图片描述

三公共函数库生成随机的名字

首先在Shooter里创建一个Name变量
在这里插入图片描述
公共函数库可以理解为静态函数,可以不需要引用直接调用
先创建一个函数库蓝图,取名为Utility
在这里插入图片描述
创建两个一个函数和两个数组,数组里是名字和姓氏
在这里插入图片描述
函数内容就是随机获取数组里的值,然后返回拼接的字符串
在这里插入图片描述

在这里插入图片描述

四使用GameMode的事件分发器,来处理死亡消息

创建GameMode的事件分发器

死亡消息的分发器不能放在shooter蓝图里,否则每创建一个角色,UI就要获取一次引用
正确的做法是放到GameMode里
在GameMode里新建一个事件分发器,命名为Kill_Dispatcher,添加五个参数,杀人者的名字和队伍,被杀者的名字和队伍,使用的武器
在这里插入图片描述
在这里插入图片描述

修改死亡方法,发出击杀消息

在shooter的Die函数里调用这个事件分发器
需要注意,这里为了获取到击杀者的信息,为Die函数添加了一个Shooter类型的输入参数Enemey
在这里插入图片描述
然后为了给Die的Enemy函数赋值,要在TakeDamage里也添加一个Shooter类型的Enemy
在这里插入图片描述
然后为了给TakeDamage函数的Enemy参数赋值,需要修改步枪和发射器子弹的函数
步枪:
在这里插入图片描述
发射器的bullet:
添加一个Shooter参数,记录这个子弹的主人,TakeDamage时传入
在这里插入图片描述
在launcher的shootOnce方法里,创建子弹是,将GunOwner传入
在这里插入图片描述

UI注册消息

在Fpp_UI的事件图表里注册击杀消息,调用KillInfoList的Add方法添加一个新的消息
这里的自定义事件比较复杂,可以直接从“绑定事件到KillDispatcher”节点拖一个线出来,自动创建带有正确输入参数的事件
在这里插入图片描述

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

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

相关文章

HTTP---基础知识

天天开心!!! 文章目录 一、HTTP基本概念1. 什么是HTTP,又有什么用?2. 一次HTTP请求的过程3.HTTP的协议头4.POST和GET的区别5. HTTP状态码6.HTTP的优缺点 二、HTTP的版本演进1.各个版本的应用场景2、注意要点 三、HTTP与…

数据结构 KMP 字符串匹配算法

KMP算法是计算机科学中的一种字符串匹配算法,KMP是三个创始人名字首字母 题目 AcWing - 算法基础课 前置知识点 KMP算法是一种高效的字符串匹配算法,算法名称取自于三位共同发明人名字的首字母组合。该算法的主要使用场景就是在字符串(也叫…

Conda配置Python环境

1. 安装 Conda 选择发行版: Anaconda:适合需要预装大量科学计算包的用户(体积较大)。 Miniconda:轻量版,仅包含 Conda 和 Python(推荐自行安装所需包)。 验证安装: co…

数仓开发那些事(11)

某神州优秀员工:一闪,领导说要给我涨米。 一闪:。。。。(着急的团团转) 老运维:Oi,两个吊毛,看看你们的hadoop集群,健康度30分,怎么还在抽思谋克&#xff1f…

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案

✅ MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案 前言一、问题现象二、原因分析1. 使用了 strictInsertFill/strictUpdateFill 导致更新失效2. 实体类注解配置错误3. MetaObjectHandler 未生效4. 使用自定义 SQL 导致自动填充失效5. 字段类型不匹配 三、…

C++ STL常用算法之常用算术生成算法

常用算术生成算法 学习目标: 掌握常用的算术生成算法 注意: 算术生成算法属于小型算法&#xff0c;使用时包含的头文件为 #include <numeric> 算法简介: accumulate // 计算容器元素累计总和 fill // 向容器中添加元素 accumulate 功能描述: 计算区间内容器元素…

axios基础入门教程

一、axios 简介 axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;可用于浏览器和 Node.js 环境&#xff0c;支持以下特性&#xff1a; 发送 HTTP 请求&#xff08;GET/POST/PUT/DELETE 等&#xff09; 拦截请求和响应 自动转换 JSON 数据 取消请求 并发请求处理 二…

短视频团队架构工作流程---2025.3.30 李劭卓

短视频团队架构&工作流程—2025.3.30 李劭卓 文章目录 短视频团队架构&工作流程---2025.3.30 李劭卓1 工作职责1.1 编剧&#xff1a;1.2 主编&#xff1a;1.3 总编&#xff1a;1.4 导演&#xff1a;1.5 摄影&#xff1a;1.6 演员&#xff1a;1.7 后期&#xff1a;1.8 美…

MySQL 高效 SQL 使用技巧详解

MySQL 高效 SQL 使用 技巧详解 一、为什么需要优化 SQL&#xff1f; 性能瓶颈&#xff1a;慢查询导致数据库负载升高&#xff0c;响应时间延长。资源浪费&#xff1a;低效 SQL 可能占用大量 CPU、内存和磁盘 I/O。 目标&#xff1a;通过优化 SQL 将查询性能提升 10 倍以上&am…

AI基础03-视频数据采集

上篇文章我们学习了图片的数据采集&#xff0c;今天主要了解一下视频数据采集的方法。视频是由一系列图像构成的&#xff0c;其中每一张图片就是一帧。视频数据采集方法通常有自动图像采集和基于处理器的图像采集两种。我们学习一下如何利用python 工具和笔记本计算机摄像头进行…

Scala 数组

Scala 数组 引言 Scala 作为一门多范式编程语言&#xff0c;融合了面向对象和函数式编程的特点。数组是编程语言中非常基础和常见的数据结构&#xff0c;在 Scala 中也不例外。本文将详细介绍 Scala 中的数组&#xff0c;包括其定义、操作以及在实际开发中的应用。 Scala 数…

Text-to-SQL将自然语言转换为数据库查询语句

有关Text-To-SQL方法&#xff0c;可以查阅我的另一篇文章&#xff0c;Text-to-SQL方法研究 直接与数据库对话-text2sql Text2sql就是把文本转换为sql语言&#xff0c;这段时间公司有这方面的需求&#xff0c;调研了一下市面上text2sql的方法&#xff0c;比如阿里的Chat2DB,麻…

golang 的strconv包常用方法

目录 1. 字符串与整数的转换 2. 字符串与浮点数的转换 3. 布尔值的转换 4. 字符串的转义 5. 补充&#xff1a;rune 类型的使用 方法功能详解 代码示例&#xff1a; 1. 字符串与整数的转换 方法名称功能描述示例Atoi将字符串转换为十进制整数。strconv.Atoi("123&q…

MATLAB详细图文安装教程(附安装包)

前言 MATLAB&#xff08;Matrix Laboratory&#xff09;是由MathWorks公司开发的一款高性能的编程语言和交互式环境&#xff0c;主要用于数值计算、数据分析和算法开发。内置数学函数和工具箱丰富&#xff0c;开发效率高&#xff0c;特别适合矩阵运算和领域特定问题。接下来就…

ShapeCrawler:.NET开发者的PPTX操控魔法

引言 在当今的软件开发领域&#xff0c;随着数据可视化和信息展示需求的不断增长&#xff0c;处理 PPTX 文件的场景日益频繁。无论是自动化生成报告、批量制作演示文稿&#xff0c;还是对现有 PPT 进行内容更新与格式调整&#xff0c;开发者都需要高效的工具来完成这些任务。传…

HTML5贪吃蛇游戏开发经验分享

HTML5贪吃蛇游戏开发经验分享 这里写目录标题 HTML5贪吃蛇游戏开发经验分享项目介绍技术栈核心功能实现1. 游戏初始化2. 蛇的移动控制3. 碰撞检测4. 食物生成 开发心得项目收获后续优化方向结语 项目介绍 在这个项目中&#xff0c;我使用HTML5 Canvas和原生JavaScript实现了一…

有关pip与conda的介绍

Conda vs. Pip vs. Virtualenv 命令对比 任务Conda 命令Pip 命令Virtualenv 命令安装包conda install $PACKAGE_NAMEpip install $PACKAGE_NAMEX更新包conda update --name $ENVIRONMENT_NAME $PACKAGE_NAMEpip install --upgrade $PACKAGE_NAMEX更新包管理器conda update con…

【Linux】调试器——gdb使用

目录 一、预备知识 二、常用指令 三、调试技巧 &#xff08;一&#xff09;监视变量的变化指令 watch &#xff08;二&#xff09;更改指定变量的值 set var 正文 一、预备知识 程序的发布形式有两种&#xff0c;debug和release模式&#xff0c;Linux gcc/g出来的二进制…

【Ubuntu常用命令】

1.将本地服务器文件或文件夹传输到远程服务器 文件 scp /data/a.txt administrator10.60.51.20:/home/administrator/ 文件夹 scp -r /data/ administrator10.60.51.20:/home/administrator/ 2.从远程服务器传输文件到本地服务器 scp administrator10.60.51.20:/data/a.txt /h…

golang 的time包的常用方法

目录 time 包方法总结 类型 time.Time 的方法 库函数 代码示例&#xff1a; time 包方法总结 类型 time.Time 的方法 方法名描述示例               ẵNow()获取当前时间和日期time.Now()Format()格式化时间为字符串time.Now().Format("2006-01-02 15…