虚幻5UI系统(UMG)基础(已完结)

- 在内容浏览器中创建用户界面->空间蓝图
- 画布Canvas:调整控件的位置,面板->画布面板,一般1920*1080,放置控件拖入画布
- 图像控件Image:用于渲染图片、引用材质,默认为纯色(纯色不需要引用资源 )
- 设置图片相对于锚点的位置
- 图片的尺寸
- 图像显示层级Zorder
- 让图像保持原始大小
- 设置要引用的图像(笔刷->)
- 设置图像颜色
- 锚点Anchors:九点适配、单轴适配、父节点尺寸适配,长按shift更新对齐进行匹配,长按Ctrl更新位置进行匹配(unity是alt)
- 文本Text:用于渲染文本
- 设置文本内容
- 设置文本颜色
- 设置文本字体:(C盘->Window->Fonts复制一份拖入内容浏览器,弹出窗口选“是”,自动生成虚幻可以识别的字体)我超看看人家!unity!!
- 轮廓
- 将UI控件显示到关卡:
- 关卡->蓝图->打开关卡蓝图
- 通过“创建控件”节点创建指定控件蓝图
- 通过“添加到视口”节点将控件蓝图显示到关卡

显示鼠标指针:默认情况下,点击游戏区域后鼠标隐藏,不能操作UI,需要默认显示鼠标指针来控制。
- 在关卡蓝图中获取玩家控制器
- 通过玩家控制器显示鼠标指针
- 可以通过FlipFlop控制鼠标显示与隐藏:FlipFlop在A和B状态中轮流切换
- 顺序上反了一下,可以通过加not反过来

按钮控件:
常用属性:
- 按钮默认状态
- 鼠标经过样式
- 按下鼠标样式
- 已禁用
- 绑定指定事件
事件->“+”-> 在蓝图中创建一个点击事件

滑条Slider:
滑条控件时可以拖动的UI控件,设置滑条的取值范围,可以在拖动控件时,动态设置值,并且可以通过对应事件实现滑条值的获取
- 样式->条厚度:调整滑条的宽度
- 鼠标悬停时的样式与非悬停时的样式需要在细节中分别设置
- 事件->值变更时->蓝图

进度条ProgressBar:
进度条控件是用于显示进度的控件,可以通过设置进度条的值来控制进度条的显示
动态设置控件的值:
设置进度条的值:
- 勾选细节中右上方“是变量”
- 在图表中,左边“蓝图”拖入变量

设置文本的值:
方法一:(不推荐)
- 勾选“是变量”
- 蓝图中拖入变量

方法二:
- 内容->文本->创建绑定
- 蓝图中,自动创建函数;也可以自己创建文本变量
- 文本变量默认值:蓝图->细节->默认值

实现动态文本值变换:在事件图表中->拖入变量->修改值

进度条通过绑定实现控制:速度->百分比->创建绑定,蓝图->变量->创建一个浮点数变量->设置变量默认值
通过移动滑块来改变进度条的值:在滑块的“值改变时”中设置变量值,将变量值赋给进度条的百分比绑定
退出游戏:“退出游戏”函数
Loading界面:
- 进度条的外框和填充图都需要设置(特别是外框变形的情况下),颜色需要改变(不然会变色)
- 控制进度:在事件图表中添加一个新事件,命名为“loading”->设置浮点变量,作为进度条的进度,并将它绑定到进度条的百分比上->判断它小于1->加一个“分支”->当变量小于1时,调用loading->在loading事件中,让变量每次增加0.05,判断它是否大于1,当大于1时将它设置为1。在loading事件最右边可以添加跳转到新场景

选择框CheckBox:
- 用于表明一个特定的状态是选中还是未选中,为用户提示True/False或是/否的选择;
- 有两种状态:
- 勾选框(可添加说明文本,选择框的尺寸需要在图像中设置)
- 切换按钮(一般不添加说明)
- 绑定值:可以给选择框添加一个布尔值,用于控制选中与取消
- 添加选中事件
- 勾选框:加入子文本;勾选“大小到内容”;在样式->未勾选图像/未勾选悬停图像…改变勾选框大小,需要全部改变
- 切换按键:一般不加入子文本;不勾选“大小到内容”;直接改变尺寸可以控制按键尺寸
多格式文本块RichTextBlock
- 又称富文本,在单一文本段中出现多种文本样式(字体,大小,颜色,格式)并且可以掺杂图像内容
- 使用多格式文本块控件的步骤
- 内容浏览器->创建其他->数据表格,选择RichTextStyleRow
- 在数据表格中点击添加,必须要有一行名为Default的数据
- 添加相应格式的行,设置字体大小与颜色
- 在多格式文本块中,选中对应的数据表格(外观->文本样式集)
- 在文本中使用数据名字标签显示富文本<Red></>(需要注意的是结束时只有一个斜杠)
自定义控件:
- 其他UI控件的子控件
- 步骤:
- 内容浏览器->用户界面->创建自定义控制蓝图
- 设置控件与样式
- 可以从控制板中将这个控件拖入大的用户界面中
命名插槽Named Slot:
- 当用户创建UI成为其他UI的子控件时,默认情况下是不能拥有子控件的,要想拥有子控件,就必须给UI添加一个命名插槽
- 步骤:
- 创建带有命名插槽的UI控件
- 在命名插槽中拖入UI控件作子控件
- 用途:用于不确定样式的控件占空
边界Border:
- 边界控件是一个只能包含一个子元素的容器,可以用来做元素的背景
- 当给边界控件添加子控件后,子控件将不具备自由设置锚点、位置、尺寸等特性了
- 当拖入子元素时,默认留白,“填充”属性中可以设置边界宽度
- 可以设置子元素的对齐方式
- 作用:给元素多一个样式、设置背景,比如按钮按下时,颜色改变但边框不变
文本框TextBox:
- 用于给用户提供输入文本的控件
- 可以添加提示文本
- “为密码”设置密码(有点像html里各种…)
- 事件->文本修改时(实时,一般不用)/文本提交时(回车时/失去焦点时调用)
(案例)登录界面:
- 内容浏览器->蓝图->结构,默认会提供一个布尔变量;添加两个变量,用户名和密码;界面中的文本框添加提交事件->在蓝图中添加文本变量,存储数据->在蓝图中添加结构变量,变量类型就是创建的结构名称->将结构变量拖入,设置结构变量->SET左下角拖出来,创建结构变量->将两个文本变量分别连接结构变量中的两个值->SET右下角拖出来,中断结构变量

文本框(多行)MultiLine:
- 用于给用户提供输入多行文本的控件
- 内容文本-提示文本,shift+enter换行,样式->前景/只读/聚焦颜色->修改颜色
- 事件-文本变更时/文本提交时
组合框(字符串)ComboBoxString
- 用于实现下拉选项
- 配置选项:内容->默认选项->添加->出现索引[n]-选项名称;默认选项:内容->选中的选项->写选项名称
- 蓝图-动态添加:图表->创建变量,类型为文本-数组(数组要在细节中设置)->默认值-Options中添加数组->将变量拖入蓝图(获取值)->遍历数组中所有项ForEachLoopwithBreak->事件构造连到遍历左边Exec,数组连到遍历左边Array->拖入组合框,连到“添加选项”节点"->遍历右边ArrayElement连到添加选项的Option(需要强制转换)
- 显示第一个元素:组合框连到“设置选定索引”的目标

覆层Overlay:
- 用于让UI控件一层一层的叠在一起,可以有多个子空间之间的堆叠
- 内容浏览器->用户界面->控件蓝图->建一个画布面板;再建一个空间蓝图->建一个覆层->右上角“填充屏幕”改成“自定义”->建一个边界->可以用对齐的方式对子控件进行设置,放进主界面的时候需要重新修改大小
包裹框WrapBox:
- 为多个子控件打包的盒子,当子控件在包裹框中放不下时自动换行
- 可以有多个子控件
- 可以通过设置插槽填充设置子控件之间的间距
- 可以通过设置包裹尺寸设置包裹控件的换行宽度
- 在控件蓝图-画布面板中,面板->包裹框->将子控件拖入包裹框,ctrl+d复制粘贴,一行放不下时会换行->插槽-尺寸/内部布局-显式包裹尺寸
- 包裹框作为覆层的子元素
控件切换器Widget Switcher:
- 用于显示指定索引的子元素
- 有多个子元素
- 通过索引显示子元素
- 索引从0开始
- 切换器->激活控件索引
统一网格面板Uniform Grid Panel:
- 管理多个子元素,子元素的尺寸一样大,默认所有子元素都堆叠在一起,可以通过调节上下左右控制元素位置
- 插槽->水平拉伸、垂直拉伸,获得平分区域的效果
网格面板Grid Panel:
- 管理多个子元素,子元素的尺寸可以单独设置尺寸,默认所有子元素都堆叠在一起,可以通过调节上下左右控制元素位置
- 填充规则->设置列填充/行填充
UI动画基础:
- 左下角->动画->动画面板右上角->固定
- 选中元素->动画面板中添加动画->选中动画->添加轨道->…->添加结束帧
UI动画:
- 播放:切换到图表->获取变量->(动画->)播放动画->
- Start at Time:开始播放的时间
- Play Mode:快进/翻转(1-0)/乒乓(0-1-0)

水平面板Horizontal Box:
- 用于在水平方向管理多个子元素,子元素的尺寸可以单独设置尺寸,子元素类型可以不同,子元素的位置只能左右切换
- 用于:用户名+水平框…
垂直面板Vertical Box:
- 用于在垂直方向上管理多个子元素,子元素的尺寸可以单独设置尺寸,子元素类型可以不同,子元素的位置只能上下切换
- 用于:头像+名称
尺寸框Size Box:
- 用于设置子控件尺寸,只能有一个子控件
- 在没有勾选大小到内容时,子布局无效,子控件的尺寸与尺寸框的尺寸保持一致
- 当大小到内容后,可通过子布局来设置或控制子控件的尺寸
- 子布局->宽度重载、高度重载-勾选后有效
- 所需最小宽度、所需最小高度、所需最大宽度、所需最大高度->勾选并设置后子控件的大小受控制,比如当设置宽度小于所需最小宽度后会改变其宽度=所需最小宽度
滚动框Scroll Box:
- 当子控件得到总宽度或总高度超出滚动框时,超出部分隐藏,显示滚动条