UE5 蓝图学习计划 - Day 10:UI 系统(HUD 与 Widget)

news/2025/2/3 6:45:29 标签: ue5, 学习, ui, 虚幻5, 虚幻引擎, unreal engine, 虚幻

在游戏开发中,UI(用户界面) 是玩家获取游戏信息、与游戏进行交互的重要部分。Unreal Engine 5 提供了 HUD(Head-Up Display) 和 Widget Blueprint(小部件蓝图) 来帮助开发者创建 血量条、得分系统、菜单界面 等 UI 组件。在本篇文章中,我们将学习如何使用 Widget Blueprint 创建 UI,并通过蓝图更新 UI 数据,最终实现一个 血量与得分系统。

理论学习

  1. HUD(Head-Up Display)
    • HUD 是传统的游戏 UI 系统,主要用于显示 玩家状态(血量、得分、时间)。
    • 主要通过 DrawText() 和 DrawTexture() 在屏幕上绘制信息。
    • 在 UE5 中,HUD 主要用于 旧版 UI 开发,新项目更推荐使用 Widget Blueprint。
  2. Widget Blueprint(小部件蓝图)
    • Widget Blueprint 是 UE5 现代化 UI 开发的核心工具。
    • 允许使用 拖拽 UI 组件 设计界面,并通过 蓝图控制 UI 数据更新。
    • 主要组件:
      • Text(文本):用于显示分数、血量等信息。
      • Progress Bar(进度条):用于显示血量或能量。
      • Image(图片):用于显示游戏 UI 图标。
      • Button(按钮):用于玩家交互,如菜单按钮。

实践任务:创建血量与得分 UI

目标

  1. 创建 HUD UI
    • 添加 血量条(Health Bar),动态更新角色血量。
    • 添加 得分文本(Score Text),显示当前得分。
  2. 在角色蓝图中更新 UI
    • 角色受到伤害时,血量 UI 变化。
    • 角色拾取物品时,得分 UI 更新。

步骤 1:创建 UI 蓝图

  1. 创建 Widget Blueprint
    1. 在 Content Browser 右键 User Interface > Widget Blueprint。

    2. 选择 User Widget,命名为 WBP_GameUI。
      在这里插入图片描述

    3. 双击打开 UI 编辑界面。

  2. 设计 UI 界面
    1. 添加Canvas Panel

      • 在 Hierarchy 面板,拖入Canvas Panel。
        在这里插入图片描述
    2. 添加血量条

      • 在 Hierarchy 面板,拖入 Progress Bar,放到Canvas Panel下面,命名为 HealthBar。
      • 设置 Fill Color 为红色,调整 大小 适配 UI 需求。
        在这里插入图片描述
    3. 添加得分文本

      • 拖入 Text 组件,命名为 ScoreText。
      • 设置默认文本为 “Score: 0”。
        在这里插入图片描述
    4. 调整布局

      • 使用 Canvas Panel 进行 UI 布局。
      • 将血量条放置在 屏幕左上角,得分文本放在 右上角。
        在这里插入图片描述
        在这里插入图片描述

步骤 2:创建 UI 更新逻辑

  1. 在 WBP_GameUI 中创建变量
    1. 在 Graph 视图,添加以下 绑定变量:

      • PlayerHealth(Float):角色血量,默认值 1.0(代表 100%)。
      • PlayerScore(Integer):角色得分,默认值 0。
        在这里插入图片描述
    2. 切换到Designer视图 绑定 血量条进度

      • 选中 HealthBar,在 Details 面板 绑定 Percent:
      • 这样当 PlayerHealth 变化时,血量条 UI 也会自动更新。
        在这里插入图片描述
    3. 绑定 得分文本

      • 选中 ScoreText,绑定 Text:
      • 这样 PlayerScore 变量更新时,文本 UI 也会更新。
        在这里插入图片描述

步骤 3:将 UI 添加到屏幕

  1. 在角色蓝图中创建 UI

    1. 打开 BP_PlayerCharacter,在 Event Begin Play 事件中:
      • 创建 UI
      • 存储 UI 变量
      • 这样 UI 会在游戏启动时自动显示。
        在这里插入图片描述
  2. 更新 UI

    1. 在 角色受伤事件(使用键盘X事件来模拟) 中:

      • 减少 PlayerHealth。
      • 调用 UI 变量的 Set PlayerHealth 更新血量条。
        在这里插入图片描述
    2. 在 角色拾取物品事件(使用键盘P事件来模拟) 中:

      • 增加 PlayerScore。
      • 调用 UI 变量的 Set PlayerScore 更新得分文本。
        在这里插入图片描述

步骤 4:测试 UI

  1. 运行游戏,观察 血量条与得分 UI 是否正确显示。
  2. 按键盘X让角色受到伤害,观察 血量 UI 是否减少。
  3. 按键盘P让角色拾取物品,观察 得分 UI 是否增加。
    在这里插入图片描述

学习收获

通过今天的学习,你掌握了:

  1. 如何使用 Widget Blueprint 创建 UI(血量条、得分文本)。
  2. 如何通过蓝图变量动态更新 UI 数据。
  3. 如何将 UI 绑定到角色蓝图,实现游戏交互。

下一步学习计划

接下来,我们将学习 材质与特效系统,探索如何通过 动态材质(Dynamic Material) 和 粒子特效(Particle Effects) 提升游戏的视觉表现!🚀


http://www.niftyadmin.cn/n/5840572.html

相关文章

python 从知网的期刊导航页面抓取与农业科技相关的数据

要从知网的期刊导航页面抓取与农业科技相关的数据,并提取《土壤学报》2016年06期的结果,可以使用requests库来获取网页内容,BeautifulSoup库来解析HTML。由于知网页面结构可能会发生变化,在实际使用中,需要根据页面结构…

《基于Scapy的综合性网络扫描与通信工具集解析》

在网络管理和安全评估中,网络扫描和通信是两个至关重要的环节。Python 的 Scapy 库因其强大的网络数据包处理能力,成为开发和实现这些功能的理想工具。本文将介绍一个基于 Scapy 编写的 Python 脚本,该脚本集成了 ARP 扫描、端口扫描以及 TCP…

使用 HTTP::Server::Simple 实现轻量级 HTTP 服务器

在Perl中,HTTP::Server::Simple 模块提供了一种轻量级的方式来实现HTTP服务器。该模块简单易用,适合快速开发和测试HTTP服务。本文将详细介绍如何使用 HTTP::Server::Simple 模块创建和配置一个轻量级HTTP服务器。 安装 HTTP::Server::Simple 首先&…

人工智能第2章-知识点与学习笔记

结合教材2.1节,阐述什么是知识、知识的特性,以及知识的表示。人工智能最早应用的两种逻辑是什么?阐述你对这两种逻辑表示的内涵理解。什么谓词,什么是谓词逻辑,什么是谓词公式。谈谈你对谓词逻辑中的量词的理解。阐述谓词公式的解…

安卓pad仿写element-ui表单验证

安卓pad仿写element-ui表单验证 背景:仿写对象:showcase: 布局总览:核心代码总览:代码仓: 背景: 最近半年开始接触安卓开发,平时开发接触的点比较零碎,计划闲暇时做一些…

day37|完全背包基础+leetcode 518.零钱兑换II ,377.组合总和II

完全背包理论基础 完全背包与01背包的不同在于01背包的不同物品每个都只可以使用一次,但是完全背包的不同物品可以使用无数次 在01背包理论基础中,为了使得物品只被使用一次,我们采取倒序遍历来控制 回顾:>> for(int j …

计算机网络安全与运维的关键 —— 常用端口全解析

目录 前言 常见端口分类及用途 20 端口(FTP 数据传输) 21 端口(FTP 消息控制) 22 端口(SSH) 23 端口(Telnet) 25 端口(SMTP) 53 端口(DNS&…

Elixir语言的安全开发

Elixir语言的安全开发 引言 在当今这个互联网高度发展的时代,软件的安全性变得越来越重要。随着网络攻击的增多,软件漏洞的频繁暴露,开发者面临着前所未有的安全挑战。Elixir,作为一种现代化的函数式编程语言,以其高…