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.pswp.cn/news/899661.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899661.shtml
英文地址,請注明出處:http://en.pswp.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…