《Unreal Engine 4蓝图可视化编程》一1.4 创建第一个蓝图

简介:

本节书摘来异步社区《Unreal Engine 4蓝图可视化编程》一书中的第1章,第1.4节,作者: Brenden Sewell 译者: 陈东林 责编: 胡俊英,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 创建第一个蓝图

现在游戏世界中放置了一个圆柱体,在当圆柱体被击中时,我们需要为圆柱体赋上前一节创建的材质。最后一个交互是游戏逻辑判断圆柱体被选择,然后将圆柱体的材质改变为红色材质。为了创建这一行为并添加到圆柱体上,我们需要创建一个蓝图。创建蓝图的方式有很多种,但是为了简便,我们可以创建蓝图并直接添加给圆柱体。为此,确保在场景中选中了CylinderTarget对象。单击细节面板顶端的蓝色蓝图/添加脚本(Blueprint/Add Script)按钮,将可看到路径选择窗口。

在这个项目中, 我们把所有的蓝图存放在FirstPersonBP文件夹的子文件夹Blueprints下,因为这个蓝图是为CylinderTarget actor创建的,所以文件名为默认的Cylinder- Target_Blueprint即可,如图1.13所示。


13

现在内容浏览器(content browser)的FirstPersonBP >> Blueprints文件夹中可以看到CylinderTarget_Blueprint。双击打开该蓝图的蓝图编辑器,我们将看到圆柱体的视口视图,如图1.14所示。我们可以操作actor的一些默认属性或者增加更多的组件,它们都包括很多自有逻辑使得actor更加复杂。我们将在后续章节中探讨组件(components),现在,我们需要创建一个简单的蓝图并直接赋给actor。为此,单击视口标签旁边的事件图表(Event Graph)标签。

图1.14 视口视图

1.4.1 浏览事件图表面板

事件图表(见图1.15)看起来应该很熟悉,因为它与我们之前使用的材质编辑器的视觉效果和功能上由很多相似之处。默认情况下,打开事件图表时会有3个未连接也未使用的事件节点。事件(Event)指游戏中的一些动作(action),它作为蓝图做某件事情的触发器。大多数蓝图遵循如下结构:事件(when)|条件(if)动作(do)。这个可以被文字描述为:当某件事情发生时,检查X、Y、Z是否为真,如果为真,完成这一系列的动作。举个例子,蓝图定义了我是否开枪,流程如下:当(when)扣动扳机,如果(if)子弹已上膛,进行(do)射击。

在事件图表中,列出的3个默认事件节点是用的最多的事件触发器。当玩家(Player)第一次开始玩游戏时触发事件Begin Play。当另一个actor开始与蓝图控制的现有actor发生触碰或重叠时触发事件Actor Begin Overlap。事件Tick在游戏运行的每一帧触发与之关联的动作,帧率决定于电脑的配置,也影响着事件Tick触发动作的频率。

我们希望每次射弹击中圆柱体时,都能触发“改变材质”这一动作。可以使用事件Actor Begin Overlap节点来探测射弹对象与目标的网格是否重叠。我们将通过仅当另一个actor触发目标actor时检测来简化这些。以一个简洁的页面开始吧,选中所有的默认事件,单击键盘的[delete]键把它们都删除。


15

1.4.2 检测事件Hit

为了创建检测事件,在图表空白区域单击鼠标右键,搜索框中输入“hit”,如图1.16所示。找到事件Hit(Event Hit)节点并选择,当这个蓝图控制的actor被另一个actor触发的事件Hit。

当在事件图表中添加了事件Hit节点后,会看到事件Hit节点上有许多颜色各异的输出引脚。首先注意到节点右上角的白色类似三角形的引脚,这是执行引脚(execution pin)。它定义了动作序列中下一步要执行的动作。将不同节点的执行引脚连接在一起便组成了所有蓝图的基本功能。既然拥有了触发器,那我们就需要找到一个动作,这个动作可以让我们能够改变actor的材质。


16


从执行引脚拖出一根引线至节点右端的空白区域,将自动出现一个搜索窗口,允许我们创建一个节点并将它与执行引脚相连。确认搜索框内勾选了情境关联(Context Sensitive)。这样将搜索结果限制在能够被添加的节点中。在搜索框内键入“set material”,选取Set Material(StaticMeshComponent)节点。

注意 小贴士 

如果在勾选了情境关联的情况下搜索不到想查找的节点,可尝试去勾选重新搜索。即使这个节点在情境关联搜索时查找不到,它仍有可能可以添加到蓝图逻辑当中。

事件Hit节点中的动作(action)如图1.17所示。


17

1.4.3 转换材质

当用户将Set Material节点放置到蓝图中后,便会注意到它已经与事件Hit节点的执行引脚连接。当蓝图的actor被另外的actor击中时,蓝图现在将会执行Set Material动作。然而,我们现在还没有设置响应Set Material时将要调用的材质。

为了设置将调用的材质,单击Set Material节点中的选择资源(Select Asset),调出下拉列表,在搜索框内输入“red”来搜索之前创建的TargetRed材质。查找到该材质后单击它,将该资源添加到Set Material节点的材质区域,如图1.18所示。

我们现在已经做好了改变目标圆柱体颜色的蓝图的准备工作,但是在保存(Save)蓝图之前,还需要编译一下。编译是将蓝图语言转换为告诉计算机该如何操作的机器指令。单击编辑器工具左上角的编译(Compile)按钮,然后单击保存。


18

既然我们已经设置了一个基础的游戏交互,运行测试一下,确保结果是否达到预期。关闭蓝图编辑器,在UE编辑器中单击播放按钮运行游戏,尝试跑动和射击,与我们之前创建的CylinderTarget actor发生碰撞,如图1.19所示。


19

1.4.4 升级蓝图

当运行游戏的时候,会看到目标圆柱体在被子弹击中时,确实改变了颜色。这是游戏框架的初始,它可以用于接收敌人对于玩家(Player)动作的反馈。你或许也会注意到玩家碰到目标圆柱体时,圆柱体也会改变颜色,然而我们希望只有子弹击中目标时才改变目标颜色。这些不可预见的结果在游戏开发过程中很普遍,最好避免的方法就是频繁地测试我们正在创建的游戏。

为了修正蓝图中的bug,让它仅对子弹击中时做出反应并改变目标颜色,回到Cylinder Target_Blueprint蓝图,继续查看事件Hit节点。

在事件Hit节点上余下的输出引脚,它们是存储着关于事件数据的一些变量。这些数据可以被传递到其他节点。引脚的颜色代表着变量的数据类型,蓝色引脚传递对象(object),例如actor;红色引脚包含一个布尔型(true/false)变量。

随着接触更复杂的蓝图,我们将学习更多的引脚类型,但现在,我们只需要关心蓝色的Other输出引脚。它包含其他actor的碰撞触发事件Hit的数据。这个在确保目标圆柱体只在被子弹击中时改变颜色很有用,而其他的actor碰到目标时不改变颜色。

为了确保仅对子弹做出响应,断开事件Hit节点与SetMaterial节点之间的连接(断开引脚连接的方法之一为:按住[Alt]键,然后鼠标左键单击连线),从Other引脚拖出一根引线到空白区域,在搜索框内键入“projectile”,找到“类型转换为FirstPersonProjectile(Cast To FirstPersonProjectile)”并选择,如图1.20所示。

FirstPersonProjectile是UE4引擎的第一人称模板中的蓝图,控制着子弹的行为。该节点使用类型转换来确保:只有在子弹actor击中与转换节点引用的对象相匹配的圆柱体时,才将动作附加到节点的执行引脚。


20

当节点出现时,可以看到在事件Hit的Other输出引脚和转换节点的Object引脚之间有一根蓝色的线相连(如果没有自动连接,可以手动连上)。连接FirstPersonProjectile节点的输出执行引脚和Set Material节点的输入执行引脚,如图1.21所示。


21

现在编译、保存,关闭蓝图界面后单击播放按钮进行测试。现在你会发现玩家碰到目标圆柱体时不会改变圆柱体颜色,只有子弹击中时才可以。

相关文章
|
存储 NoSQL 数据库
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
这篇文章讲述了在分布式微服务系统中添加用户注册和登录功能的过程,重点介绍了用户注册时通过远程服务调用第三方服务获取短信验证码、使用Redis进行验证码校验、对密码进行MD5加密后存储到数据库,以及用户登录时的远程服务调用和密码匹配校验的实现细节。
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
|
6月前
|
SQL 数据采集 分布式计算
深度探索 Dataphin 数据中台的功能与表现
深度探索 Dataphin 数据中台的功能与表现
212 7
|
JSON 资源调度 JavaScript
nodemon 启动问题:nodemon : 无法将“nodemon”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
【6月更文挑战第3天】在尝试运行`nodemon`时遇到错误,提示无法识别该命令。问题可能是缺少nodemon环境或系统不允许执行脚本。解决方法包括:首先尝试使用`npm install nodemon -g`全局安装nodemon,如果安装失败,可能需要以管理员权限打开PowerShell,执行`set-ExecutionPolicy RemoteSigned`,然后再次尝试安装。nodemon是一款用于Node.js开发的工具,能监控源码变化自动重启应用,常用于提高开发效率。安装后,通过`nodemon your-app.js`启动应用,可自定义配置如监听特定文件、扩展名或目录。
2416 1
|
JavaScript 前端开发 Shell
使用vitepress搭建自己的静态个人博客 || 个人知识库
使用vitepress搭建自己的静态个人博客 || 个人知识库
235 0
|
设计模式 uml
在电脑主机(MainFrame)中只需要按下主机的开机按钮(on()),即可调用其它硬件设备和软件的启动方法,如内存(Memory)的自检(check())、CPU的运行(run())、硬盘(Hard
该博客文章通过一个电脑主机启动的示例代码,展示了外观模式(Facade Pattern)的设计模式,其中主机(MainFrame)类通过调用内部硬件组件(如内存、CPU、硬盘)和操作系统的启动方法来实现开机流程,同时讨论了外观模式的优缺点。
|
存储 Ubuntu 应用服务中间件
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
149 4
|
机器学习/深度学习 自然语言处理 算法
什么是数据集的分类?
【7月更文挑战第10天】什么是数据集的分类?
1439 1
|
数据采集 存储 数据可视化
Pandas高级教程:数据清洗、转换与分析
Pandas是Python的数据分析库,提供Series和DataFrame数据结构及数据分析工具,便于数据清洗、转换和分析。本教程涵盖Pandas在数据清洗(如缺失值、重复值和异常值处理)、转换(数据类型转换和重塑)和分析(如描述性统计、分组聚合和可视化)的应用。通过学习Pandas,用户能更高效地处理和理解数据,为数据分析任务打下基础。
1354 3
|
SQL 关系型数据库 MySQL
SpringBoot自定义配置注入的方式:自定义配置文件注入,从mysql读取配置进行注入
SpringBoot自定义配置注入的方式:自定义配置文件注入,从mysql读取配置进行注入
471 0
|
存储 算法 Java
【算法练习】有趣的括号匹配问题(思路+ 图解 +优化)基于java实现
1.题目描述 小洛看着一堆只包含’(‘和’)‘的括号序列犯愁了,小洛想知道这串序列里最长正确匹配的序列长度是多少,你能帮帮小洛吗?
【算法练习】有趣的括号匹配问题(思路+ 图解 +优化)基于java实现