1.UI的创建与可视化
创建UI
可视化UI
Flip Flop:流程控制节点,按一次执行A,再按一次执行B,再按一次执行A,以此类推
?Is Valid:判断值是否存在
Remove from Parent:从视口中删除,但仍保留在内存中,并且变量仍然存在有效的
Create Widget:创建一个UI界面,通常会设置为变量,方便之后的调用
Add to Viewport:显示在玩家的屏幕
2.布局控件介绍
Canvas Panel:画布,可以接收许多子类
Tool Tip Text:提示文本,相当于注释
Bind:用于绑定,将前面的返回值进行绑定(如将文本信息的返回值进行绑定,实现随时更新)
Is Enabled:是否启用UI面板
Visibility:可视化(Visible:所有都可见,Collapsed:不可见,不占空间,Hidden:隐藏,占用空间,Not HIt - Testable(Self & All Children):可见,但对交互不作反馈,作用于自己及其所有子类,Not HIt - Testable(Self & Only):仅作用于自己,不包括子类)
Render Opacity:渲染不透明度,越靠近0越看不见(0,透明 1,不透明)
Translation:位置的设置
Scale:缩放设置
Shear:倾斜设置
Pivot:支点
Text控件:文本框输入
Slot:插槽
Anchors:锚点,决定显示在那个位置(Position:与锚点的距离,Size:控件大小),当窗口大小发生改变时,从锚点开始计算。当锚点变成线时就进行拉伸,如横向时,无论窗口这么变化,都会在横向进行拉伸,纵向相同。
Alignment:对齐,控制控件的原点
Size To Content:自适应大小
Zorder:渲染层级,先创建的在下面显示,后创建的会覆盖在其上面(层级高的在上面)
Content:控制输出内容
Appearance:控制显示内容{
Color and Opacity:颜色与不透明度
Font :字体
Size:字体大小
Font MaterIal:字体材质
Outline Size:给字体加边框
Separate Fill alpha:是否将字体与文本区分开
Apply Outline to Drop Shadows:是否呈现阴影
Outline Color:边框颜色
Justification:自适应对齐
}
Auto Wrap Text:自动换行
Warp Text At:换行条件
ProgressBar:进度条
Background Image:背景图
Draw As{
Box:将图像绘制成3*3的框,侧边和中间根据边界延伸
Border:将图像绘制成3*3的框,侧边平铺,中间为空
Image:将图像绘制成普通的图像,会受到拉伸的影响{
Tiling:平铺
Horizontal:水平方向平铺,竖直方向拉伸
Vertical:竖直方向平铺,水平方向拉伸
Both:水平和竖直方向都平铺
}
}
Fill Image:填充图片
Marquee Image:滚动图片,不受值的影响
Image:图像
Image Size:图像本身大小,不是控件大小
Size Box:尺寸框
- 强行控制子控件的大小
- 只能有一个子控件
第一个到第六个只有在Size To Content生效时才能生效
前两个优先级大于下面四个
Width Override:宽度
Height Override:高度
Min Desired Width:最小宽度
Min Desired Height:最小高度
Max Desired Width:最大宽度
Max Desired Height:最大高度
Min Asperct Ratio:纵横比(拉伸时保持纵横比拉伸)
Max Aspert Ratio:纵横比(拉伸时保持纵横比拉伸)
Horizontal Box:水平框
- 可以有多个子控件
- 对子控件的高度有限制
Fill:让图片尽可能充满空间
Horizontal Alignment:水平方向对齐方式
Vertical Alignment:垂直方向对齐方式
Vertical Box:垂直框
- 可以有多个子控件
- 对子控件的宽度有限制
Spacer:空白
在水平框中只能调节x,在垂直框中只能调节y
Border:背景框
- 只能有一个子控件
Overlay:
- 让新加入的控件自动叠罗汉(先加入的在最下面)
- 可以有多个子控件
Button:按钮
Normal:不点击时按钮的样式
Hovered:鼠标悬浮时按钮样式
Pressed:按下时鼠标样式
Dissabled:不启用状态鼠标样式
Normal Padding:正常情况下的间距(只对子控件生效)
Pressed Panding:按下时间距(只对子控件生效)
数据迁移
外部图片设置
材质设置:将Texture Group设置成UI
压缩设置:将Compression Settings设置成UserInterface2D(RGBA)
3.UI响应玩家输入响应机制
点击UI函数的Override,On Key Down:键盘按下时
UI监听键盘的方法
Get Key:获取输入的是哪一个键
Handled:下一层UI无法获取数据
Unhandled:下一次UI可以获取数据
Get Key Display Name:获取键位名称
也可以通过Switch on String实现多键位输入
Handled与Unhandled的区别
在人物中新添加一个输入
当是Handled时
当是Unhandled时
UI获取焦点,用于接收输入流
UI设置里,设置可以拥有焦点
Set Focus:获取焦点,可以接收键盘事件
4.输入模式与鼠标指针
Set Input Mode Game And UI (默认)
游戏和UI都可以响应
Get Player Controller:玩家控制器
In Widget to Focus:焦点对准哪一个组件
Set Show Mouse Currsor:设置鼠标的显示
In Mouse Lock Mode{
Do Not Lock:不对鼠标做任何限制
Lock on Capture:当鼠标被捕获是锁定在屏幕上(当鼠标点击后,不能越过边界框)
Lock Always:无论是否点击都被捕获
Lock in Fullscreen:全屏时锁定,不全屏时可以任意动
}
Set Input Mode Game Only
只有游戏可以响应
Set Input Mode UI Only
只有UI可以响应
分别在游戏模式和UI模式下打开菜单
5.基础UI动画制作与调用
Start at Time:开始播放时间
Num Loop to Play:循环次数(如果为0,则无限循环)
Play Mode:播发模式
6.实例
UI面板的创建
成品
UI布局
UI的可视化
UI关联数据的几种方式
1.通过绑定事件
创建变量(人物中)
在UI中获取人物蓝图中的变量
为ProgresssBar 绑定事件
绑定事件的具体实现
注意:绑定事件会每帧调用,开销很大
回复生命值(用函数实现)
MIN:返回最小值
减少生命值(用函数实现)
MAX:返回最大值
调用函数
2.自定义函数实现UI与数据的关联
纯函数:没有输入引脚,本身不作任何修改
方法实现
调用方法
3.事件分发器(可以集中在一个地方调用不同蓝图bangding)
创建
Call:调用,调用绑定的所有事件
Bind:绑定,只能绑定事件
Unbind:解绑
Unbind all:解绑所有
绑定事件
调用事件
在世界中渲染UI
成品
UI布局
Widget
Space:渲染位置(World:渲染到世界,一般用于3D,Screen:渲染到屏幕:一般用于2D)
Widget Class:要渲染的对象(渲染那个UI界面)
Draw at Desired Size:理想大小
拖放UI的制作
成品(可以在屏幕上托放UI)
原UI布局(Item_Slot)
创建变量
进行数据绑定
函数的选择
On Mouse Button Down :鼠标点击
On Drag Detected:拖放
Dectect Drag if Pressed:检测键位
托的时候创建一个UI
拖放UI布局(Item_slot_ForDrag)
创建变量,同时使其能在生成时创建
绑定数据
最开始的UI布局
Canvas Panel:无法响应函数,需要添加Image
Item_Slot:自己创建的UI界面
DragDropOperation: 处理拖放操作的信息交互类,让UI界面知道拖放的是什么
创建一个变量
Create Drag Drop Operation:托的时候显示UI,放的时候让控件知道放的是什么,完成数据交互
(Class:创建的交互类,DragDropOperation
Playload:数据的装载,拖动时数据的交互,放下时获取信息
Item Slot:对Item Slot变量的引用
)
OnDrop:获取 Create Drag Drop Operation中的数据,实现放的操作
Get Mouse Position on Viewport:获取鼠标位置
Slot as Canvans Slot:获取Canvans插槽的属性
Set Position:设置插槽位置
UI数据交互加深
赋值
创建UI:Test_Image
TestImage设置为变量
创建OnDrap函数
在DragDropOperation中新建一个变量
传参
Set Brush:设置图片
在原UI中添加UI界面
运行时就可以看见效果
Event Pre Construct:调试时就可以运行
交换
创建本地变量:只在当前蓝图生效
变量赋值
数据交互
完整蓝图
在UI中
悬停ToolTip
鼠标悬浮在图片上时显示文本,但悬浮在字上时不显示
悬浮在文本上时
创建绑定事件
创建变量
绑定事件实现
显示物品信息UI
创建变量
绑定数据
鼠标指针与世界对象交互
创建一个交互类,并放在世界中,再类中写交互事件
在PlayController中设置
在GameMode中把创建的PlayController应用上去
鼠标事件
On Begin Currsor Over:鼠标悬浮时激活
On End Currsor Over:离开时激活
On Clicked:点击时激活