UE4从入门到凑活(UI篇):UMG系统介绍

1448天前
转载文章 / UI / GUI(游戏) (本文章为转载文章,如果若您的权利被侵害,请联系管理员删除的)
8880
0
0
 | 
作者:学院君


导读:学好软件是为了能有更多的时间来做设计,本次网易游戏云鹏童鞋将为大家介绍UE4引擎中UI开发可能会用到的一些功能,总结一下走过的路和踩过的坑,希望能对大家有些帮助。


本文来自学院《UE4入门之路》干货专题


小提示:全文多图,若无法一次性看完,可先收藏~



一、关于UE4


2017年,多款基于虚幻引擎4(简称UE4)开发的游戏开始崭露头角,如果将2017年比作虚幻引擎爆发的元年,那么2018年则是虚幻引擎以及Epic Games再创新高,实现自我超越的一年。


2018年7月UE4的开发者人数突破630万,中国的使用者仅次于美国,位居世界第二。2017年11月至2018年7月短短不到9个月间,UE4用户数自400万增至630万,足足成长了60%。在2018年UE4对于各行各业和不同国家的影响力表明了Epic Games已经突破游戏引擎的界限,把UE4带向了新的爆发点。


1667975951741961_0.png


由于UE4强大的渲染效果,一些影视作品或者短片都开始尝试使用UE4来进行制作。


1667978654292149_0.png



二、优势分析


从引擎的角度来说,UE4有很多优势,例如强大的渲染效果,先进的VR技术等。但是从界面开发者的角度分析,个人认为主要优势有以下几点:


实时预览

由于UE4是一个全方位的平台,而不再是一个工具,所以在制作UI的同时你也可以实时预览游戏中的效果,在跑查和迭代时更加快捷方便。


3DUI

代入感和沉浸感一直是设计师们在游戏设计中十分关注点,而3DUI就是目前比较热门的一个研究方向。但是基于cocos的开发方式在制作3DUI时局限性较强,十分依赖美术的效果。而UE4中创建3DUI的方法十分快捷方便,再加上能够实时预览游戏效果,使得UX对设计效果有着更强的把控性。


蓝图系统

UE4强大的蓝图系统通过可视化编程的方式,使得开发者可以不写一行代码就能完成整个游戏的设计与开发。所以只要功夫深,UX也可以实现基本的游戏效果。



三、界面介绍 软件界面


1667975870665348_7.png


软件的界面十分易于理解,就不多做介绍了。


在UI相关的工作中,主要会用到以下几种文件:


Blueprint( User Inteface-Blueprint) 也就是常说的UMG,是我们常用的UI工程文件


Font(字体资源拖入Content Browser自动生成)字体文件


Texture (PNG资源拖进来可以自动生成)  图片资源文件


Material 材质文件,可用于UI材质或者mesh材质


Actor(Blueprint Class-Actor)可以摆放到场景中的文件类型,用于制作3DUI


UMG编辑界面


1667976254644756_0.png


控件基本属性


1667975871723917_9.png


由于所有控件的Detail都是由一个属性池内的各个属性构成,因此在这先对通用的属性进行介绍,再具体介绍每个控件的一些不同之处。



3.1 Common 通用属性


1667976375835850_0.png

通用设置面板



控件名


由于UE4的控件名在单个文件内是全局检索的,因此一个文件里不可能存在两个一样的名字,这样做的好处是程序可以直接调用控件名进行代码编写,而我们则需要更规范的命名。


一般我们的做法是命名成 :控件类型_父节点_功能名 如btn_lobby_back。


Is Variable


1667976708381746_7.png

勾选后将作为变量出现在蓝图里并进行调用


变量越多,读表用时越长,因此程序未引用的图层尽量不要勾选。


如image就是默认勾选variable的,其实没有必要。


搜索框:能够快速检索需要的detail栏内内容。



3.2 Slot 插槽


1667978866459108_0.png

插槽设置面板


Alignment 校准点


1667976708208005_9.png


坐标代表这个点在本控件上的位置,(0,0)代表左上角  (1,0)代表右下角。为什么和ccs不一样!!!


Anchors 锚点


UMG中通过锚点与校准点来进行适配,可以总结成三种:


1.九点适配(以中心点为例)


1667978985337355_0.png


可以设置的内容有:校准点与锚点的XY距离+控件XY尺寸。


 2.根据父节点单轴尺寸(长或宽)适配


1667979043836658_0.png


可以设置的内容:与单轴两端距离+另一轴的控件坐标+另一轴的控件尺寸。


3.根据父节点尺寸适配


1667979130823109_0.png


可以设置的内容:与父节点的四个边缘的距离。


Size to content 尺寸适应内容


功能和名字一样,会检索子节点或自身资源,并自动调整尺寸。个人感觉用途极广,很多地方可以不需要麻烦程序大大动态调节。


1667976709102688_13.png

聊天气泡



Z Order Z轴顺序


UMG在渲染时是按Panel中图层从下至上的层级来渲染效果的,但是对于Canvas Panel例外。Canvas Panel的所有子集都是平行关系,因此有些时候会出现上方图层渲染层级高于下方的图层,这个时候可以调Zorder强行调整渲染层级。但是要尽量少用,会占用额外的渲染开销。另外,z轴顺序调整局限于该控件的父集内部,不能叠加。


166797670952140_14.png


在上图顺序中,bg_1的显示层级低于bg_2


因为panel_1的Zorder低于panel_2不能按照-10+20=10>0来计算。



3.3 Appearance 外观


Style 


1667979305687411_0.png

Style设置面板


根据控件的类型不同会有不同状态需要引用资源,如此处为button的normal态。直接将资源拖到这里就可以进行引用(大部分控件都自带默认资源)。


1667979359497541_0.png


Tint


可以对目前状态下的资源进行染色。


Draw As


None 不渲染,可表现为全透明像素,但是可以保持有交互性;


Box 九宫拉伸,margin为九宫的百分比,无法设置具体像素;


Border 与九宫类似,但是中空,拉伸区域采用重复拼贴来填充;


Image  直接拉伸。


1667979390739001_0.png


三种渲染方式的示例


Color and Opacity


1667979417164659_0.png


本处染色对整个控件进行染色,即所有状态的资源都会叠加上这个颜色。


Color Picker 拾色器


1667976709853315_19.png

UE4调色板


与PS中对应的是Hex sRGB色号  但是PS中采用的16进制色号为6位   UE4中的为8位。


1667976710484528_20.png


将new/old里面的颜色可以拖到这里保存为全局颜色,在项目管理的时候十分方便。



3.4 Font 字体


1667979621258284_0.png

字体设置面板



Size 尺寸


UMG制作时默认dpi为96像素/英寸,psd默认dpi是72像素/英寸。


在GUI设计时将dpi设为96,或者将72dpi下字体的字号乘以0.75,都能还原效果图中的效果。


Font Material 字体材质


UE4中可以对UI附加材质来实现贴图效果。


166797970180214_0.png


图中两个样例左侧为材质,右侧为应用了材质后的字体效果。


用这个方法来处理文本可以使字体+材质来获得多种多样的文本效果,可以一定程度上减少图片文字的使用,减少多语言合图的开发压力。


1667979754735759_0.png

H50的多语言合图



Justification 对齐方式


1667979797585422_0.png


相信你肯定要问为什么只能调整垂直方向的对齐方式,(之前我被困扰了很久!)


后来发现UE4的对齐逻辑基本上都靠控件与panel之间的相对位置来进行,因此此处若要调整竖直方向的对齐方式可以在外嵌套sizebox。


1667979828251681_0.png



Wrapping 自动换行


1667979853149882_0.png


这里提供了两种文本自动换行的方法,两者不能同时生效。


根据父节点的尺寸自动换行;


当单行文本内容达到某一像素长度时进行换行(设为0代表不自动换行)。


注意:如果需要文本能够在打断英文单词来进行换行,则需要额外勾选 Allow Per Character Wrapping,否则一个超长单词是不会被打断来进行换行的。


1667979895611669_0.png


另外,Appearance下的AutoWrapText一般是不勾上的。



3.5 Interaction 交互性


1667979921997631_0.png


is focusable勾选后,这个控件在接收到点击事件时会打断其他所有正在进行的操作。


此处的勾选应该视情况而定,强打断性的界面入口可以通过勾选来打断移动、攻击等操作。


而如果技能、吃药、切换武器等需要同时配合其他操作的入口则不能勾选。


1667979954245967_0.png

明日之后主界面Focusable分析


点击下拉之后可以对控件的交互行为进行更细节的设置。


例如当button的点击事件阻挡了Scrollbox接收滑动事件时,则可以将Touch Method设为Precise Tap。



3.6 Behavior 行为


Tool Tip Text 悬停提示


鼠标悬停的时候显示的提示文字内容。



Visibility 可见性


此处可以控制游戏中的显示效果,但不影响在UMG制作时的显示与隐藏。


Visible  可见并接受交互事件;


Collapsed  不可见且不占用任何体积;


Hidden  不可见但占用体积,不接收交互事件;


Hit test invisible  可见,且他和他的子节点都不接受点击事件   ;


Set hit test visible  可见,且它自身不接受点击事件,不影响子节点。



由于visible状态可以接受交互事件,因此在收到交互事件的时候会遍历目前所有visible状态的UI控件,因此可见但不可交互的控件的visibility调成Set hit test visible会提高计算速度。



有许多控件的默认状态就是visible,例如image,因此在确认控件不接收交互事件时可以设为set hit test invisible可以减少不必要的开销。


Render Opacity 渲染透明度


控件的整体透明度设置。



3.7 Clipping 裁切


1667980405740526_0.png


需要裁切选为clip to bounds即可



3.8 Render Transform 渲染变形


1667980501997778_0.png


渲染变形这一块比较基础就不多做介绍了。但是,需要注意的Archor,Alignment,Pivot是三个不同的点。在cocos里面alignment和pivot是两个相同的点:


1667980536957751_0.png



3.9 Events 事件


可以通过对控件绑定事件来实现交互效果,点击之后会进入蓝图系统。蓝图系统十分强大,甚至可以通过直接连蓝图的方式完成游戏的设计,这里就不展开细说了。


1667980565296202_0.png

Events设置



四、常用控件介绍


UMG中常用的控件类型有四种:


1667980606828461_0.png



4.1 Image 图片


不能添加子节点。


1667980657366218_0.png


图片的属性包括 Slot、Appearance、Behavior、Render Transform、Clipping,具体内容可以查询前面的介绍。


由于image的原始资源就是一个白色块,因此任何纯色块资源都不需要额外出资源,只需对image进行染色即可。


这里需要特别注意的是:image不仅仅可以引用图片资源,可以添加材质资源,可以通过材质来制作粒子、模型、特效等等丰富的效果。



4.2 Text 文本


文本不能添加子节点。


1667980832479349_0.png


文本的属性包括Slot、Font、Behavior、Warpping、Render Transform、Clipping,具体内容可以查询前面的介绍。


在Content内输入内容,可以通过shift+enter进行换行。



4.3 Rich Text 富文本


富文本格式可以在一个文本框内显示出不同的字体格式甚至图片文字,为了实现这一效果,我们首先要创建一个字体格式表格。


1667981009204816_0.png


然后就可以在UMG中引用这个表格资源来设置文本。


1667981058964776_0.png



4.4 Button 按钮


按钮控件可以添加一个子节点。


1667981163287548_0.png


按钮的属性包括Slot 、Appearance、Interaction、Behavior、Render Transform、Clipping,具体内容可以查询前面的介绍。


值得注意的是按钮有Normal/Hovered/Pressed/Disabled四种状态,在开发时至少需要为前三种设置资源。



4.5 CheckBox 复选框


复选框控件可以添加一个子节点。


1667981306888216_0.png


按钮的属性包括Slot、Appearance、Interaction、Behavior、Render Transform、Clipping,具体内容可以查询前面的介绍。



4.6 Progress Bar 进度条


进度条不能添加子节点。


1667981353493108_0.png


由于UE4中没有环形进度条控件,需要结合材质与蓝图系统来实现一个环形进度条的效果,具体流程可参见:https://www.youtube.com/watch?v=9NtSfPq95fQ。



4.7 Slider 滑块


滑块不能添加子节点。


1667981453696157_0.png




4.8 Text Box 文本输入框


输入框不能添加子节点。


文本输入有单行输入(Common>Text Box)和多行输入(Input>Text Box Multi-Line)两种。


1667981501252952_0.png


本质上等同于button+text,不多做介绍。



4.9 Combobox 下拉框


下拉菜单不能添加子节点。


1667981713797702_0.png




4.10 Canvas Panel 画布面板


画布面板是一种基础的面板,其允许在任意位置布局、固定控件,并将这些控件与画布的其它子项按Z轴顺序排序。画布面板是非常适用于手动布局的控件。


1667981713797702_0.png


如上图,只有Canvas Panel可以这么随意的摆放控件位置,但也更难对齐。因此一般有较强的栅格系统的设计排版不建议采用Canvs Panel。


1667981937650783_0.png



4.11 Horizental/Vertical Box水平/竖直框


水平框和竖直框的内容基本一致,因此在这一并介绍了。


1667981972868160_0.png


值得注意的是子控件的Slot属性发生了变化。


1667982048229453_0.png



有两个需要重点关注的地方:


通过padding设置子控件之间的间距。如果是数量确定,内容确定的列表,可以手动设置padding。


1667982085249720_0.png


如果数量不确定或内容不确定需要程序动态添加的列表,则需要把间距提前设计好放在node中。


1667982115332790_0.png


子控件的尺寸不再能自由定义。这里提供了两种调节尺寸的方式:


Auto代表自动调节尺寸,与之前Slot中的Size to Content一致;


Fill代表自动填满剩余空间;


这里展示一下不同设置的效果:


1667982153312675_0.png




4.12 Grid Box 网格面板


网格面板可以为你创建一套网格系统,并让子控件在该网格内进行布局。


1667982190327949_0.png

一个栅格系统


上图的网格系统将区域划分为了一个3x6的网格,其中第二行的高度是其余两行的两倍,那么我们就可以设置GridBox。


1667982228674692_0.png

GridBox网格设置


划分好网格后,只需设置子节点的参数即可占用网格。


1667982262522852_0.png

GridBox子节点设置



4.13 Scroll Box 滚动框


滚动框容器使得内容过多时可以在限定范围内进行滚动。


1667982306974257_0.png



4.14 SafeZone 安全区


安全区控件的子节点会自动避开全面屏的安全区来进行适配。


1667982347522489_0.png


预览安全区控件在iphone X上的效果


1667982373932691_0.png


屏幕尺寸调整区域可以修改刘海屏的方向来测试


SafeZone还可以设置只对某一个方向的安全区生效(比如攻击按键只想在iPhoneX上左右偏移,不会向上偏移)。


1667982401307037_0.png


设置生效的安全区



4.15 Warp Box 自动换行容器


该控件会将子控件从左到右排列,超出其宽度时会将其余子控件放到下一行。常见于背包或仓库的设计中。


1667982448249888_0.png


个人觉得有发展为折叠屏设备的适配容器的潜力。(・ิω・ิ)


1667982476567348_0.gif

折叠屏适配方法


1667982510769666_0.png

绿框为wrapbox  蓝框为item



4.16 Widget Switcher 选项卡切换器


控件切换器常见于Tab切换页面,切换器的子控件中每次一次最多只会显示一个。


1667982553102765_0.png

选项页切换



4.17 Background Blur  背景模糊


这是一个能够自动模糊下层的效果。


1667982596194385_0.png




4.18 User Created


所有创建好的UMG都可以在User Created里面被检索到。


1667982630105329_0.png


项目中创建的widget都能在这找到


也就是我们常说的node,而Named Slot就是为这些node的引用提供坐标和尺寸的,和ccs中的节点有点类似。



五、动画系统介绍


UMG的动画也是采用序列帧的方式来实现的。


1667982669457909_0.png

序列帧轨道介绍


序列帧中可以设置的属性极其丰富,基本包含了前面所有介绍过的控件属性。


1667982713908359_0.png

关键帧曲线调整



在序列帧区域的快捷方式:


CTRL+鼠标滚轮     缩放时间轴。


SHIFT+鼠标滚轮    滚动时间轴。



六、结语


如果你能看到这里,恭喜你,大概你已经忘得差不多了吧?


软件的学习还是要靠实际的操作才能理解与发现问题,所以赶紧实践一下吧。当然笔者也是在一边摸索一边开发,如果有描述不完整或者有误的地方,欢迎指正与讨论。

声明:乐魔UI(Lemooui)内网友所发表的所有内容及言论仅代表其本人,并不反映任何UI(Lemooui)之意见及观点。
举报
收藏
文章-GUI(游戏)
8880
0
0
标签
没有标签
全部评论
发表评论
设置密码
注册会员
我已阅读并接受《乐魔UI协议》
微信登录
二维加载中...

使用微信扫一扫登录

“乐魔UI”

建议反馈
提交取消
举报
提交取消