UE4-UMG

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:点击时激活

 

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值