UE4学习笔记 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.rhkb.cn/news/42920.html

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

相关文章

机器学习——LightGBM

LightGBM(light gradient boosting machine,轻量梯度提升机)是对XGBoost进行改进的模型版本,其三者之间的演变关系为:GBDT-》XGBoost-》LightGBM,依次对性能进行优化,尽管XGBoost已经很高效了,但是仍然有缺…

什么是SQL作业

SQL作业是在数据库服务器上按特定时间或间隔自动执行的计划任务或流程,这些作业由Microsoft SQL Server中的SQL Server代理管理,对于自动执行日常任务(如数据库系统中的备份、数据导入和报告生成)以及确保及时准确地处理和更新数据…

小程序内表格合并功能实现—行合并

功能介绍:支付宝小程序手写表格实现行内合并,依据动态数据自动计算每次需求合并的值,本次记录行内合并,如果列内合并,同理即可实现 前端技术:grid布局 display:grid 先看实现效果: axml&…

CD19.【C++ Dev】类和对象(10) 日期类对象的成员函数(日期+天数)

目录 日期天数 需要考虑的几个问题 1.天数加在日上,有可能会溢出,需要进位 2.对月进位,也有可能导致月会溢出,需要进位 3.对年进位,需要考虑是否为闰年 代码设计 取得指定月的天数GetMonthDay函数 方法1:if判断或switch/case 方法2:查表 版本1 版本2 operator 初始…

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.3实战案例:在笔记本电脑上运行轻量级LLM

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 实战案例:在笔记本电脑上运行轻量级LLM2.2.3 模型架构设计与实现1. 环境与工具准备1.1 硬件要求1.2 软件栈选择2. 轻量级模型架构设计2.1 模型参数配置2.2 关键技术优化3. 实战流程3.1 数据准备流程3.2…

新手村:逻辑回归-理解04:熵是什么?

新手村:逻辑回归04:熵是什么? 熵是什么? 前置条件 在开始学习逻辑回归中的熵理论之前,需要掌握以下基础知识: 概率论与统计学: 概率分布(如伯努利分布、正态分布)。条件概率和贝叶斯定理。期…

linux》》docker 、containerd 保存镜像、打包tar、加载tar镜像

Linux》》docker: 默认情况下,Docker镜像保存在/var/lib/docker/目录下。 当您使用docker pull命令从Docker Hub或私有镜像仓库中拉取镜像时,Docker会自动将镜像文件保存在/var/lib/docker/image/目录下。 每个镜像都由一个或多个层组成,这些…

Processor System Reset IP 核 v5.0(vivado)

这个IP的作用,我的理解是,比普通按键复位更加高效灵活,可以配置多个复位输出,可以配置复位周期。 1、输入信号: 重要的信号有时钟clk信号,一般连接到系统时钟;输入复位信号,一般是外…

SQL中累计求和与滑动求和函数sum() over()的用法

[TOC](SQL中累计求和与滑动求和函数sum() over()的用法) 一、窗口函数功能简介 sum(c) over(partition by a order by b) 按照一定规则汇总c的值,具体规则为以a分组,每组内按照b进行排序,汇总第一行至当前行的c的加和值。 sum()&#xff1a…

优雅的开始一个Python项目

优雅的开始一个Python项目 这是我在初始化一个Python项目时,一键生成的项目文件。它自动完成了git初始化、环境管理、日志模块这三件事情,并在最后进入了虚拟环境。 uv安装 uv是一个现代的Python包管理和项目管理工具。uv中文文档 安装uv: # unix: …

【Django】教程-2-前端-目录结构介绍

【Django】教程-1-安装创建项目目录结构介绍 3. 前端文件配置 3.1 目录介绍 在app下创建static文件夹, 是根据setting中的配置来的 STATIC_URL ‘static/’ templates目录,编写HTML模板(含有模板语法,继承,{% static ‘xx’ …

Vue 2 探秘:visible 和 append-to-body 是谁的小秘密?

🚀 Vue 2 探秘:visible 和 append-to-body 是谁的小秘密?🤔 父组件:identify-list.vue子组件:fake-clue-list.vue 嘿,各位前端探险家!👋 今天我们要在 Vue 2 的代码丛林…

docker-compese 启动mysql8.0.36与phpmyadmin,并使用web连接数据库

1、找一个文件夹,比如 E:\zqy\file\mysql,cd到这个目录下创建文件docker-compose.yml 2、将下面的代码块复制到docker-compose.yml文件中 version: 3.3 services:mysql:image: mysql:8.0.36container_name: mysqlrestart: alwaysports:- 3306:3306netw…

【Java SE】包装类 Byte、Short、Integer、Long、Character、Float、Double、Boolean

参考笔记:java 包装类 万字详解(通俗易懂)_java包装类-CSDN博客 目录 1.简介 2.包装类的继承关系图 3.装箱和拆箱 3.1 介绍 3.2 手动拆装箱 3.3. 自动拆装箱 ​4.关于String类型的转化问题 4.1 String类型和基本类型的相互转化 4.1.1 String —…

《网络安全等级测评报告模版(2025版)》

网络安全等级保护(以下简称“等保测评”)制度是我国网络安全领域现行的基本制度。所谓等保测评,即具有资质的测评机构,依据国家网络安全等级保护规范规定,按照有关管理规范和技术标准,对等保对象&#xff0…

【零基础入门unity游戏开发——2D篇】2D物理系统 —— 2DEffector效应器

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…

从零开始:使用Luatools工具高效烧录Air780EPM核心板项目的完整指南

本文将深入讲解如何使用Luatools工具烧录一个具体的项目到Air780EPM开发板中。如何使用官方推荐的Luatools工具(一款跨平台、命令行驱动的烧录利器),通过“环境配置→硬件连接→参数设置→一键烧录”四大步骤,帮助用户实现Air780E…

SpringMVC的请求与响应

SpringMVC的请求与响应 SpringMVC请求处理流程请求映射和参数绑定RequestMapping注解RequestMapping的属性RequestMapping的请求参数绑定HTML代码JavaBean代码controller代码在控制器中使用原生的ServletAPI对象 SpringMVC响应数据处理及跳转结果跳转方式ModelAndViewServletAP…

【QT继承QLabel实现绘制矩形、椭圆、直线、多边形功能,并且支持修改大小,移动位置,复制,粘贴,删除功能】

文章目录 介绍绘制一个矩形(椭圆)roi绘制一个多边形roi对矩形roi的缩放:对多边形rio的缩放(移动点的位置) 介绍 绘制矩形,椭圆,直线实际用的都是是同一个思路:鼠标第一次点击就确定…

3.0 Disruptor的使用介绍(一)

Disruptor: 其官网定义为:“A High Performance Inter-Thread Messaging Library”,即:线程间的高性能消息框架,与Labview的生产者、消费者模型很相似。 其组成部分比较多,先介绍几个常用的概念: …