小怿学习笔记
继上篇笔记小怿Unreal实战日记(三)丨应用模型顶点色处理技巧,有效降低资源开销,在搭建好了UE项目的基础架构之后,我们需要制作场景中交互的部分,以完善整个场景与用户之间的信息沟通。
本篇笔记以实现基础的平面UI交互、3D场景交互以及镜头切换交互的功能,记录基础的交互编写逻辑与实现思路。
1
平面UI交互
1.1 按钮与图片
打开空间蓝图,在左侧控制板里的通用栏找到按钮,将其拖入到画布面板中。在右侧的插槽属性中将尺寸调整到与UI按钮适配的尺寸。在外观里面,“普通”、“已悬停”和“已按压”的图像都添加准备好的按钮,同时在“已按压”的着色A通道上降低一定的透明度,在按压的时候按钮的视觉效果上能起到一定的变化。
图1.1.1 添加按钮素材
选择按钮,在右侧细节面板找到事件,选择点击时右侧的按钮,如图1.1.1,视图会直接跳转到事件图表的界面去,此时按钮点击时已成为一个信号的输入端口。我们可以通过触发点击时的端口开启用一系列的交互。
图1.1.1 点击时事件
我们可以通过右上方的“设计器”和“图表”来切换不同编辑模式。
图1.1.2 模式切换
在按钮点击时的右方调出命令“打印字符串”,我们可以将字符串的内容修改成任意的测试文本。此时依次点击左上方的编译、保存、运行,运行该项目。此时点击按钮便会在左侧出来“打印字符串”里面的测试文本内容,这代表这该按钮的信号成功传输到“打印字符串”节点。
图1.1.3 添加“打印字符串”节点
图1.1.4 触发“打印字符串”节点
在控件蓝图里创建一个按钮,并摆放好准备好的素材。
图1.1.3 摆放素材
1.2 触发显示隐藏(硬切)
接下来,将使用按钮来触发图片素材的显示。将“打印字符串”节点删除,取而代之调用“设置可视性”节点,如图1.2.1,然后再从左侧将变量一栏中找到图片素材,将其直接拖入界面中,释放鼠标,选择获取。将图片素材链接到“打印字符串”节点的目标输入端上。
图1.2.1 调用“设置可视性”节点
图1.2.2 获取图片素材
切换回设计器页面,在画布中选择图片素材,在右侧细节面板中找到可视性一栏,将属性修改为隐藏,这样可以让图片素材在初始状态在处于隐藏状态。
图1.2.3 修改图片可视性
这时候已经完成了通过按钮让图片从隐藏变为显示的过程。但如果想要让同一个按钮,当它多次点击时将图片素材的状态从“显示——隐藏”往复循环的话,我们可以通过增加一个“Flip Flop”节点,达到循环的效果,如图1.2.4.
图1.2.4 添加“Flip Flop”节点
1.3 触发显示隐藏(动画)
接下来,我们将图片素材的显示隐藏动画从硬切改成渐变的动画,丰富切换过程的细节。
首先将图表中“设置可见性”节点和图片素材的获取删除掉。切换到设计器界面,将图片素材的可视性改回默认的可视,渲染不透明度改为0,此时默认启动项目时图片素材也是不显示的状态。
图1.3.1 设置图片素材的可视性
添加动画并修改命名为“图片渐显”,选择好图片素材并添加到时间轴的轨道里。
图1.3.2 添加动画
在轨道里选择渲染不透明度,将该属性添加到动画时间轴里,如图1.3.3。拉动时间轴右侧的方框位置,将动画长度调整为0.5秒。设置初始不透明度为0,动画结束时不透明度为1。
图1.3.3 添加动画属性
此时再切换到图表页面,在左侧变量下出现了新的动画变量。将动画直接拖到画面中,选择获取动画变量。分别调用出对应的“播放动画”与“反向播放动画”节点,并分别连接到Flip Flop的A与B上。
图1.3.4 调用播放动画节点
图1.3.5 链接动画节点
此时编译后再运行项目,便能达到图片素材渐隐渐显的效果。
2
3D场景交互
2.1 认识关卡变体集
关卡变体集可以用来设置关卡中Actor的多个不同属性切换。可以在不同的组中给关卡中的多个Actor设置不同的属性,常用的有材质属性,可视性等等。通过切换变体,达到3D场景切换的效果。
在内容浏览器中右键,调出其他-关卡变体集(Level Variant Sets)。
图2.1.1 调出关卡变体集
在插件中搜索Variant,并勾选启用Variant Manager 和Variant Manager Content。然后重启UE以激活插件。
图2.1.2 启用Variant Manager插件
2.2 设置关卡变体集
双击打开变体集,点击添加一个变体集,在变体集下新增两个变体。变体集与变体我们都可以理解为是一个独立的分组。它们之间并不会相互影响。
图2.2.1 添加变体
我们拿切换车漆功能来举例子,以引擎盖Actor为例,示例场景的引擎盖Actor有多个材质元素,其中元素0是需要切换的车漆材质。
图2.2.2 引擎盖Actor的材质元素
我们需要将引擎盖的Actor添加到变体中去,将Actor直接拖入变体时会弹出属性弹窗,我们搜索需要切换的材质元素0属性,勾选选项将其添加到变体中。
图2.2.3 添加Actor到变体
在第一个变体中保留当前的车漆效果,在第二个变体中将准备好的另一个车漆材质替换掉原本材质元素0的车漆效果。我们双击不同的变体可以看到车漆切换的效果。
图2.2.4 切换变体
重复上述操作,将所有车漆的部分都替换完成即可。
2.3 调用关卡变体集
我们回到UMG的图表页面下,右键调出“事件构造”后,调用“获取类的所有Actor”,选择“level Variant Sets Actor”,调用关卡变体集。
图2.3.1 在UMG调用关卡变体集
在“获取类的所有Actor”节点的Out Actors输出一个“Get(复制)”节点,如图2.3.2。再从Get节点提升为变量,如图2.3.3。
图2.3.2 调用“Get(复制)”节点
图2.3.3 提升为变量
修改变量的名字,因为是改变车漆效果,所有我们改成carpaint。此时就完成了在UMG中对关卡变体集的引用。
图2.3.4 UMG对关卡变体集的引用
接下来我们在“Flip Flop”节点后面调用“按命名开启变体集”节点,实现不同变体(车漆)之间切换。将变体集调用的“SET”的变量输出端输出到“按命名开启变体集”节点的目标输入端。将“按命名开启变体集”节点中的变体集命名和变体命名改成关卡变体集对应的名字。
图2.3.5 调用变体切换
将关卡变体集放入场景中,如此便完成了对车漆切换的功能。
3
镜头交互
3.1 制作镜头变换动画
首先进入UMG的图表,在左侧的事件分发器新建两个事件,分别命名为“初始视角”和“新视角”,如图3.1.1。然后打开关卡蓝图,将事件从UMG中长按拖到关卡蓝图中,选择绑定,如图3.1.2。将绑定事件与原本蓝图的信息输出链接起来,如图3.1.3。这样就完成了UMG的事件触发与关卡的绑定。
图3.1.1 创建事件
图3.1.2 绑定事件
图3.1.3 链接事件
接下来我们添加一个自定义事件更改名字为“初始视角动画事件”,将其连接到“绑定事件到初始视角”节点。这里的作用是把这个事件发生的具体事情引用出来,用新建的自定义事件去编写,方便控制和管理。
图3.1.4 添加自定义事件
接下来的动画制作过程与前文的UMG调用过程相似,在此就不过多赘述,唯一要注意的是“延迟”链接的“控制”节点是pawn展开页下的控制节点。
图3.1.5 调用“控制节点”
图3.1.6 镜头动画接节点与参数
我们复制一下pawn,通过调整视角、摇臂长短等数据制作一个新的视角。同时将自动控制玩家这一栏改成玩家1。避免与初始pawn产生冲突。
在关卡蓝图中,添加到视口后面新增一个“序列”节点,将输出端分裂成多个,如图3.1.7.将刚刚制作的动画复制下来,绑定到新视角事件即可。
图3.1.7 使用“序列”分裂成多个输出端
3.2 调用镜头变化
我们在新的按钮后面输出“multiGate”节点,勾选上Loop选项,达到循环调用命令的效果,该节点的作用与“Flip Flop”类似。
图3.2.1 调用“multiGate”节点
我们直接将事件从左侧的事件分发器拖出来,选择调用。
图3.2.2 调用事件
值得注意的是,由于项目中默认视角是绑定的初始视角事件,所以“multiGate”节点输出的第一个节点,也就是Out0需要链接新视角,而Out1需要链接初始视角。
图3.2.3 镜头切换命令
此时镜头切换效果已经完成。运行效果如下。
以上就是本篇笔记的主要内容啦。主要讲述了小怿同学对UE上实现HMI功能的基础认识,将车载交互大致拆解成平面交互、3D交互以及镜头交互;通过记录三种交互方式各自的实现方法,将HMI复杂的交互功能简单化。下期小怿还将分享更多技术干货,欢迎大家继续关注分享。
往期推荐
怿星科技十周年大促火热进行中!

为回馈新老用户十年来的陪伴与支持,怿星科技特推出感恩促销活动。想参与的小伙伴,可以打开淘宝APP,进入[EPT怿星科技]企业店铺并下单,享历史超低价的同时,还可享受最高2.5折的优惠。活动截止到本月底,余量不多,快快抓住机会!


