UE5 <UI入门>

目录

一、什么是 UI 系统?

二、创建 UI 控件蓝图

三、控件介绍

3.1 通用控件介绍

3.1.1 图像

3.1.2 文本

3.1.3 按钮(可交互)

3.1.4 滑条(可交互)

3.1.5 进度条

3.1.6 勾选框(可交互)

3.1.7 多格式文本块

3.1.8 边界

3.1.9 自定义控件

3.1.10 命名插槽

3.2 输入控件介绍

3.2.1 文本框(可交互)

3.2.2 组合框(可交互)

3.3 面板控件介绍

3.3.1 覆层

3.3.2 包裹框

3.3.3 控件切换器

3.3.4 统一网格面板

3.3.5 网格面板

3.3.6 水平框

3.3.7 垂直框

3.3.8 尺寸框

3.3.9 滚动框

 四、动态修改控件的值

4.1 通过直接获取控件变量修改

4.2 通过创建绑定修改

五、UI动画基础

5.1 为控件(一般为面板控件)创建动画

5.2 实现播放动画

六、将 UI 控件蓝图渲染到关卡

七、小案例

7.1 搭建开始菜单

7.2 搭建Loadding界面

7.3 登陆界面搭建

7.4 面板切换

7.5 背包系统


一、什么是 UI 系统?

UI 全称 User Interface (用户界面)。开始菜单界面、设置界面、背包界面等等都属于 UI 界面。

【扩展】UMG 全称 Unreal Motion Graphics UI Designer (虚幻示意图形界面设计器),用于实现游戏中的 HUD 元素和前端菜单等等 UI 功能。

二、创建 UI 控件蓝图

三、控件介绍

3.1 通用控件介绍
3.1.1 图像

3.1.2 文本

3.1.3 按钮(可交互)

3.1.4 滑条(可交互)

常用的事件:【值变更时】

3.1.5 进度条

3.1.6 勾选框(可交互)

  • 勾选框:添加文本子控件
  • 切换按键:一般不添加文本子控件
3.1.7 多格式文本块
  • 创建数据表格,选择 RichTextStyleRow。
  • 在数据表格中添加数据,第一行名为 Default,其余行设置其他字体样式。注意:经过测试,需要选择字体族系才能生效。
  • 在多格式文本块中选择对应的数据表格。
  • 在文本中使用 <字体样式名称> 要修改的文本 </>。

3.1.8 边界

边界控件是个只能包含一个子控件的容器,可以用来做元素的背景。

当给边界控件添加子控件后,子控件将不具备自由设置锚点、位置、尺寸等特性。

3.1.9 自定义控件

3.1.10 命名插槽

当用户创建的 UI 成为其他 UI 的子控件时,默认是不能拥有子控件的。但我们可以事先给用户创建的 UI 添加命名插槽,这样就可以拥有子控件。

3.2 输入控件介绍
3.2.1 文本框(可交互)

用于给用户提供输入文本的控件。

注:文本框(多行) 可以用于给用户输入多行文本,按住 Enter 键可以实现换行。

3.2.2 组合框(可交互)

可以用于实现下拉选项。

3.3 面板控件介绍

面板控件下的子控件是没有锚点、尺寸等属性的,所以只能通过 填充和对齐 来调整位置。

补充:其实上方说的尺寸指的是控件细节栏中 尺寸X、尺寸Y,但比如说文本、图像等子控件,我们实际上是可以调整它的尺寸的。统一网格面板、网格面板例外。

3.3.1 覆层

可以实现多个子控件的堆叠。

3.3.2 包裹框

可以实现多个子控件的排列,有自动换行功能。

  • 可以通过 内部插槽填充 设置子控件之间的间距。
  • 可以通过 包裹尺寸 设置包裹框的实际宽度。

注:其实包裹框是有锚点、尺寸等属性的,但是当它放在覆层下时,这些属性会失效,所以才会通过 包裹尺寸 来设置。

3.3.3 控件切换器

用于显示指定索引(从 0 开始)的子元素。

3.3.4 统一网格面板

可以实现多个子控件的排列,每个子控件的尺寸是相同的,默认所有子控件都堆叠在一起,可以通过调节上下左右控制元素位置。

  • 可以通过 插槽填充 设置子控件之间的间距。
  • 统一网格面板下的子控件调整尺寸大小是无效的

3.3.5 网格面板

可以实现多个子控件的排列,每个子控件的尺寸是可以调整的,默认所有子控件都堆叠在一起,可以通过调节上下左右控制元素位置。

  • 可以通过 插槽填充 设置子控件之间的间距。
  • 网格面板下的子控件调整尺寸大小是无效的,需要通过网格面板中 填充规则 来修改。

3.3.6 水平框

用于在水平方向管理多个子控件,子控件的类型可以不同,位置可以左右切换。

7.3 登陆界面搭建中部分模块使用水平框演示。

3.3.7 垂直框

用于在垂直方向管理多个子控件,子控件的类型可以不同,位置可以上下切换。

略。

3.3.8 尺寸框
  • 用于设置子控件尺寸,只能有一个子控件
  • 需要勾选 大小到内容子布局 属性才能生效。

3.3.9 滚动框

当子控件的总宽度或总高度超出滚动框时,超出部分隐藏,显示滚动条。

 四、动态修改控件的值

4.1 通过直接获取控件变量修改

选择你要修改的控件,勾选【是变量】选项

4.2 通过创建绑定修改

创建绑定。

系统自动生成一个绑定的相关函数。

在事件构造的地方直接设置与控件绑定的变量的值。

注:也可以直接与已有变量进行绑定。

五、UI动画基础

5.1 为控件(一般为面板控件)创建动画

5.2 实现播放动画

但其实我们点击按钮时并不会播放缩放动画,原因出在哪里呢?如下所示:

六、将 UI 控件蓝图渲染到关卡

注:添加显示鼠标指针操作

七、小案例

7.1 搭建开始菜单

需求:添加背景图片、添加标题、添加开始/退出游戏按钮

7.2 搭建Loadding界面

需求:添加背景图片、添加描述文本、添加进度条

7.3 登陆界面搭建

需求:搭建背景、标题、用户名和密码、创建用户信息结构体、给用户名和密码添加输入完成事件、添加登录按钮事件

7.4 面板切换

添加按钮事件并且播放动画。

但是上方这样简单的写法存在bug,我切换动画的时候,原有动画不会消失。

7.5 背包系统
  • 搭建背包 UI 界面

  • 搭建背包物品界面
  • 定义背包物品数据

  • 实现背包拾取功能

补充一下,函数输出为 UI_knapsack_item 类型。

注意:这里也用到了跨蓝图通信,方式与我之前总结的略有不同。

<think>好的,我需要回答用户关于Unreal Engine 5入门到进阶的教程和技巧的问题。首先,用户提到了几个引用内容,我需要确保回答中正确引用这些资料。用户希望结构清晰,分步骤解决问题,并且回答真实可靠。 首先,我应该从入门基础开始,涵盖安装、界面、蓝图系统、材质编辑和基本场景搭建。引用[3]提到了为熟悉Unity的用户概述UE,可能可以提到这点,帮助有Unity背景的用户过渡。接着,C++编程部分需要引用[1]和[2],因为它们提到了使用C++脚本进行开发。然后,进阶部分需要包括光照、动画、物理系统和优化技巧,引用[4]中的材质与蓝图修正案例可以作为实际例子。 接下来是实战项目推荐,用户可能需要实际操作的指导,这里可以结合引用中的项目地址。最后,学习资源部分需要列出官方文档、社区论坛和教程平台,确保用户有进一步学习的途径。 在生成相关问题部分,需要涵盖蓝图与C++的区别、性能优化、材质系统、多人游戏实现以及资源管理。这些问题应该与用户可能遇到的后续学习难点相关,并引导他们深入探索。 整个过程中,必须注意使用正确的中文表达,数学公式和代码块按照要求格式化。同时,引用标记要自然地插入到相关内容的末尾,确保用户能够追溯到参考来源。最后检查回答是否符合结构要求,没有使用Markdown格式,语言口语化,分步骤说明,确保信息准确可靠。</think>### Unreal Engine 5 入门教程与进阶技巧 #### 一、入门基础 1. **安装与环境配置** - 下载Unreal Engine 5UE5)需通过Epic Games启动器,支持Windows和macOS[^3]。 - 创建项目时选择**空白模板**或**第三人称模板**,初学者建议使用蓝图(Blueprint)系统快速上手。 2. **界面与核心功能** - **视口(Viewport)**:3D场景编辑区域,支持实时渲染。 - **内容浏览器(Content Browser)**:管理项目资源(如材质、模型、音频)。 - **蓝图编辑器**:可视化编程工具,用于逻辑设计[^3]。 3. **蓝图系统入门** - 蓝图通过节点连接实现逻辑,例如角色移动: ```cpp // 示例:角色移动输入绑定(C++脚本可参考[^1]) void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { PlayerInputComponent->BindAxis("MoveForward", this, &AMyCharacter::MoveForward); } ``` - 进阶应用可结合**事件调度器(Event Dispatchers)**实现交互逻辑[^4]。 4. **材质与光照基础** - 使用**材质编辑器**创建动态效果(如水流、金属反光)。引用提到材质参数错误可能导致渲染异常,需注意贴图链接和参数设置。 - **Lumen全局光照**是UE5的核心特性,默认启用,可实现实时动态光照。 --- #### 二、C++脚本开发(进阶) 1. **C++与蓝图协作** - 在C++中定义基础类,通过蓝图派生实现灵活扩展[^2]。 - 性能敏感部分(如复杂算法)建议用C++实现,UI交互等逻辑可用蓝图。 2. **核心编程技巧** - **UObject与Actor**:理解UE5的面向对象架构,掌握`UCLASS()`和`UFUNCTION()`宏的使用[^1]。 - **内存管理**:利用智能指针(如`TSharedPtr`)避免内存泄漏。 3. **调试与优化** - 使用`UE_LOG`输出日志,结合**Profiler工具**分析性能瓶颈。 - 引用中的案例:修正蓝图参数(如旋转角度、平滑系数)可显著提升操作手感。 --- #### 三、进阶技巧 1. **Nanite虚拟几何体** - 支持亿级多边形模型实时渲染,需导入高精度模型后启用Nanite选项。 - 公式优化:$$ \text{渲染负载} = \frac{\text{模型复杂度}}{\text{LOD层级}} $$ 2. **动画与物理系统** - **Control Rig**:创建角色骨骼动画,结合物理模拟(Chaos Physics)实现真实碰撞。 - 引用案例:调整物理材质摩擦力参数可改变角色移动特性。 3. **性能优化** - **Level Streaming**:动态加载场景区块,减少内存占用。 - **材质实例化**:复用材质模板,降低GPU负载。 --- #### 四、实战项目推荐 1. **第三人称冒险游戏** - 结合蓝图实现角色控制、战斗系统和任务逻辑。 - 项目参考:[Unreal Engine 5官方示例](https://gitcode.com/Open-source-documentation-tutorial/e694e)[^1]。 2. **开放世界场景** - 使用**World Partition**管理大地图,结合**Houdini**生成程序化地形。 --- #### 五、学习资源 1. **官方文档**:涵盖API详解与案例教程。 2. **社区论坛**:Unreal Engine官方论坛和Stack Overflow。 3. **教程平台**:Udemy的《Unreal Engine 5 Masterclass》或引用[^2]提到的C++专项课程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值