这一部分将探索蓝图的基础构建模块。你将逐步了解蓝图是如何工作的,并将能够开始创建自己的游戏。
本部分由以下章节组成:
- 第1章,探索蓝图编辑器
- 第2章,蓝图编程基础
- 第3章,面向对象编程和游戏框架
- 第4章,理解蓝图通信
探索蓝图编辑器
欢迎使用虚幻引擎5并进入游戏开发的奇妙世界。在本书中,我们将学习如何 使用Epic Games为Unreal Engine([译者]我们常简称UE)创建的Blueprints(蓝图)可视化脚本语言,以及在Unreal Engine中开发游戏。
在我们能够学习蓝图之前,需要做的第一步是准备好我们的开发环境。虚幻引 擎可以免费下载。我们将学习如何安装虚幻引擎5并创建一个新的项目。之后,我们将学习一些蓝图的基本概念,并探索蓝图编辑器的每个面板。
在本章中,我们将涵盖以下主题:
l 安装虚幻引擎
l 创建新项目并使用模板
l 蓝图可视化脚本
l Blueprint类编辑器界面
l 向蓝图中添加组件
安装虚幻引擎
要使用虚幻引擎,必须先安装Epic Games启动器:
1. 访问网站https://www.unrealengine.com。
[译者]国内用户会重定向到:https:/www.unrealengine.com/zh-CN/download 该页面会指引你,如图所示:
3. 安装并启动启动器。
4. 点击左侧的虚幻引擎标签。
5. 点击出现在屏幕顶部的Library选项卡。
6. 点击引擎版本旁边的+按钮,可以在启动器中添加一个版本的虚幻引擎。你可以使用现有的最新版本(译者:不过为了跟本教程契合,建议先试用UE5.1.1版本)。
7. 点击安装按钮。启动器将开始下载安装所需的文件,可能需要很长时间才能完成。
8. 点击启动按钮,启动一个已经安装的版本。可以在同一台机器上安装多个版本的虚幻引擎——你只需将其中一个设置为当前版本即可。启动器右上 角的启动按钮将启动当前版本。
图1.1 -启动虚幻引擎
Blueprint可视化脚本系统已经是一项成熟且稳定的技术。本书使用的是5.0.0版 本,但本书中创建的示例在后续版本中应该也不会出现问题。
[译者] 目前我使用的是5.1.1版本,可以正常运行书中的所有示例。
创建新项目和使用模板
启动虚幻引擎编辑器后,会出现虚幻项目浏览器。左上角的Recent Projects 框是用来打开现有项目的,左边的其他框是用来创建新项目的模板类别。下图显示的是游戏类别的模板。
图1.2 -游戏类别下的模板
[译者] 如果觉得图片不够清晰,你可以直接查看原版PDF,也更推荐购买正版书籍。
模板是包含一些关键文件的容器,以及为不同类型的项目提供基本起点的关卡。它们对于快速制作原型或学习特定类型项目的基础框架时非常有用。模板的使用是可选的。所有模板都可以简单地在空白模板中重新创建。以下是游戏类别中每个模板的描述:
第一人称:以第一人称视角设计的游戏。这个模板以玩家角色为代表,有一对手臂,配有发射简单球形炮弹的枪。角色可以通过键盘、控制器或触控设备上的虚拟操纵杆在关卡中移动。
手持AR:用于Android和iOS设备的增强现实应用程序。此模板具有用于开关AR模式的运行时业务,以及一些用于命中检测和光照计算处理的示例代码。
第三人称:包含一个可玩的角色,带有跟随它的摄像机。摄像机位于角色的后面并略高于角色。角色有行走、奔跑和跳跃动画,可以通过键盘、控 制器或触控设备上的虚拟操纵杆在关卡中移动。
自上而下:包含一个由鼠标控制的角色,其上方有一个远距离的摄像头。玩家的角色通过鼠标或触摸屏控制,点击所需的目的地,并在移动到目的地时使用导航系统避开障碍物。这种自上而下的视角在动作角色扮演游戏中经常使用。
虚拟现实:包含虚拟现实游戏的基本功能。此模板具有传送运动、可抓取的对象、交互式对象和VR观众摄像机。该模板有一个关卡,玩家可以四处移动,并包含可以抓取和交互的物体。
载具:包含一个普通载具和一个带有悬挂的复杂载具。这个模板的关卡包含了一个简单的轨道和障碍物。
在虚幻项目浏览器的右下角,有选中模板的项目默认设置和项目配置选项。在本书的示例中,我们将使用截图上选择的值。这些选项可以在项目后期进行修 改,具体如下:
Blueprint/ C++: 有由 Blueprint或 C++编程制作的模 板语言。在本书中,我们将只使用蓝图模板 。 Unreal Engine 5中的项目可以使用Blueprint 、C++ ,或者两者的混合来开发。你可以将C++代 码 添加 到 Blueprint项目中或将Blueprint添加到C++项目中。
目标平台:桌面或移动端。如果你正在开发用于电脑或游戏机的项目,请使用桌面平台。如果您的项目将在移动设备上查看,则选择移动设备。在本书中,我们将使用Desktop选项。
质量预设:可扩展或最大。这些选项会影响项目的表现。可扩展选项禁用了 一些复杂的功能,而最大选项启用了目标平台中可用的所有功能。在本书中,我们将使用可扩展选项。
初学者内容包(Starter Content):如果勾选此复选框,项目将包括初学者内容。初学者内容包是一个包含简单网格、材质和粒子效果的内容包。本书中的例子都假设使用了初学者内容包。
光线追踪:如果这个复选框被标记,该项目将使用实时光线追踪,这是一个性能密集型的功能。本书的例子将不会使用光线追踪。
选择第三人称模板,选择位置(location)文件夹,并为项目填写名称(Name) 字段。选择前面列表中提到的项目默认值,然后点击创建按钮。项目加载完成后, 虚幻引擎关卡编辑器会显示出来,如下图所示:
图1.3 -虚幻引擎关卡编辑器
[译者] 编辑器的中英文切换。你可以在编辑器的最下方的Cmd右侧【Enter Console
Command 输入控制台命令】输入框中键入命令后回车,命令如下:culture=en或
culture=zh-cn 。此外,你也可以通过安装SwitchLanguage插件来支持语言的快速切换功能,这里不再详述,请自行前往Epic市场搜索并安装。
以下是关卡编辑器的关键面板:
1 . 工具栏: 位于关卡编辑器的顶部 ,菜单 的 下方 。 它包含常用的按钮使用操作。工具栏按钮分为四组。左边的第一组提供了快速访问功能,例如保存和向项目添加各种对象和代码。第二组按钮用于改变关卡编辑器的编辑模式。第三组可以让你播放当前的关卡,并提供各种平台相关的选项。最右边的设置Settings按钮提供了方便的项目设置。
2. 视口(Viewport):位于关卡编辑器的中心。它显示当前使用的关卡。你可以使用视口面板来移动关卡并在关卡上添加对象。按住鼠标右键时,移动鼠标旋转相机,使用WASD键左右移动。
3 . 内容浏览器( Content Browser): 可 以 通 过 点 击 内容侧滑菜单(Content Drawer)
来访问位于关卡编辑器左下角的按钮,用于管理项目的资产。资产是虚幻引擎项目中的所使用到的内容。例如,材质、静态网格、蓝图都是资产 。如果你从内容浏览器中拖拽一个资产,并将其放入关卡中,编辑器会创建一个资产的副本,并将其放置在关卡中。
4. Outliner(大纲):位于关卡编辑器右侧,它列出了关卡中的对象。
5. 细节(Detail):位于关卡编辑器右侧,Outliner下方。它显示了在视口中被选中的对象的可编辑属性。
现在我们对虚幻引擎的关卡编辑器有了一个大概的认识,接着让我们专注于蓝图的可视化脚本。
Blueprints可视化脚本
你想问的第一个问题应该是:什么是蓝图? 蓝图 这个词在虚幻引擎中有不止 一种含义。首先,它是Epic Games为虚幻引擎创建的一种可视化脚本语言的名 称。其次,它可以指使用Blueprint语言创建的一种新的游戏对象类型。
蓝图主要有两种类型:关卡蓝图(Level Blueprint)和蓝图类(Blueprint Class)。游戏的每个关卡都有自己的关卡蓝图,我们无法单独创建一个关卡蓝图。另一方面,蓝图类是用来为游戏创建交互对象的,可以在任何关卡中重复使用。
打开关卡蓝图编辑器
要打开关卡蓝图编辑器,请点击虚幻编辑器工具栏中最左侧的一组按钮中的蓝图按钮。然后在下拉菜单中选择“打开关卡蓝图 ”(译者:下面的截图使用原书英文版提供的截图)选项,如下图所示:
图1.4 -打开关卡蓝图
编辑器会打开当前关卡的关卡蓝图。关卡蓝图编辑器比蓝图类编辑器简单, 因为它只有我的蓝图面板、细节面板和事件图表编辑器。下图显示的是关卡蓝图编辑器:
图1.5 – 关卡蓝图编辑器
目前,我们不会对关卡蓝图做任何处理。我们打开它只是要看看界面。关闭关卡蓝图编辑器,返回关卡编辑窗口。现在,我们将创建一个蓝图类,打开蓝图类编辑器,查看所有可用的面板。
创建一个蓝图类
创建Blueprint类有三种方法:
1. 点击工具栏中我们用来打开关卡蓝图的蓝图按钮。然后,在下拉菜单中点击新建的空蓝图类按钮。
2. 点击内容侧滑菜单按钮打开内容浏览器,然后点击添加按钮,选择创建基本资产类别下的蓝图类。
3. 右键单击内容浏览器空白处的任何地方,从出现的菜单中选择 Blueprint Class。
Figure 1.6 – 创建一个蓝图类
在下一个窗口中,你必须选择新蓝图的父类。现在,将父类设置为Blueprint类型。窗口显示了最常见的类,但如果你需要选择另一个父类,那么只需展开All classes选项。当你选择父类时,此窗口将关闭,一个新的Blueprint资源将出现在要重命名的内容浏览器中。你可以点击取消按钮,因为我们只是在熟悉这个过程。
图1.7 - Blueprint父类
现在我们已经了解了如何打开当前关卡的蓝图以及如何创建蓝图类,我们将探索蓝图类编辑器的面板。你可以在内容浏览器中右键单击蓝图资源并选择编辑,或者双击蓝图资源来打开蓝图类编辑器。
蓝图类编辑器界面
Blueprint类编辑器包含了几个面板,每个面板用于编辑蓝图的某个方面。Blueprint 类编辑器通常简称为Blueprint编辑器。Blueprint编辑器的主要面板如下所示:
1. 工具栏(Toolbar)
2. 组件(Components)
3. 我的蓝图(My Blueprint)
4. 细节(Details)
5. 视口(Viewport)
6. 事件图表(Event Graph)
这些面板可以在下面的截图中找到。我们将以第三人称模板的
BP_ThirdPersonCharacter蓝图为例。它位于ThirdPerson/Blueprints 文件夹中。双击BP_ThirdPersonCharacter蓝图,打开蓝图类编辑器。
图1.8 -蓝图编辑器面板
工具栏面板
工具栏面板位于Blueprint类编辑器的顶部,包含一些用于编辑蓝图的必要按钮:
图1.9 -工具栏面板
按钮描述如下:
•编译: 将Blueprint脚本转换为可执行的低级格式。这意味着在运行游戏之前必须编译蓝图,否则所做的更改将不会生效。点击此按钮即可编译当前蓝图。如果没有错误,会出现一个绿色的复选图标。
•保存: 保存对当前蓝图所做的所有更改。
•浏览: 在内容浏览器中显示当前蓝图类(放大镜图标)。
•查找: 在蓝图中进行查找。
•隐藏不相关: 激活时,隐藏与所选节点无关的节点。
•类设置:允许在详细信息面板中编辑类的设置。类设置选项包含属性,如描述,类别和父类。
•类默认值: 允许在详细信息面板中编辑类默认值。类默认值是蓝图变量的初始值。
•模拟: 允许在蓝图编辑器内执行蓝图。
•运行: 开始运行当前关卡。
•调试对象:此下拉菜单允许选择一个对象进行调试。如果选择none ,它将调试使用当前Blueprint类创建的任何对象。
[译者]5.1.1版本中略有不同,如模拟
组件面板
组件面板显示当前蓝图的所有组件。
图1 - 10组件面板
组件是可以添加到蓝图中的即用型对象。要做到这一点,请点击Components面板的Add(添加)按钮。只需通过使用组件就可以创建具有各种功能的蓝图。
所选组件的属性可以在细节面板上编辑,一些组件的可视化表现可以在视口面板上看到。
静态网格、灯光、声音、box碰撞、粒子系统和摄像机都是在组件面板中使用 到的组件的例子。
我的蓝图面板
My Blueprint(我的蓝图)是一个面板,我们可以在其中为Blueprint创建变量、宏、 函数和图表:
图1 - 11我的蓝图面板
新元素可以通过点击面板顶部的Add按钮,或者每个类别旁边的+按钮来添 加。所选元素的属性可以在Details面板中编辑。
细节面板
细节(Details)面板允许你编辑蓝图中选定元素的属性。被选中的元素可以是组件、变量、宏或函数元素。在Details面板中显示的属性被组织成类别。
下面的截图显示了一个胶囊组件(CapsuleComponent)的属性。面板顶部有一个 搜索框,可以用来过滤属性。
图1 - 12 - Details面板
视口面板
视口(Viewport)面板显示了蓝图及其组件的可视化表现。视口面板有类似于关卡编辑器的控制,你可以用它来操作组件的位置、旋转和比例等。
`
图1 - 13 -视口面板
事件图表面板
在事件图表(Event Graph)面板中,我们将对蓝图的行为进行编程。事件图表面板包含事件(Event)和 动作(Action),这些事件和动作由节点表示,并通过线段来连接。
[译者]本文将交替使用动作和Action,注意这里提到的动作和动画是两个不同的概念。
事件用红色节点表示,由gameplay事件触发。一个蓝图可以有几种Action, 这些Action将被执行以响应一个事件。下面的截图显示了两个事件:InputAxis TurnRate和InputAxis LookUpRate:
图1 - 14事件图表面板
你可以右击并拖动事件图表来移动它,以查看其他事件。
其他节点是表示函数、运算符和变量的Action 。我们将在第2章,蓝图编程 中学习这些元素。
在概述了蓝图编辑器面板之后,我们现在能够创建我们的第一个蓝图。 关闭蓝图类编辑器,导航回关卡编辑器。
为蓝图添加组件
现在,让我们创建我们的第一个蓝图。这将是一个只包含组件的非常简单的蓝图。 目前,我们先不使用事件(Event)或动作(Action):
1. 点击内容侧滑菜单按钮打开内容浏览器,然后点击添加按钮,选择Blueprint 类。
2. 在下一屏中,选择Actor作为父类。
3. 将我们刚刚创建的蓝图重命名为BP_RotatingChair。蓝图名称中不能有空格,并且有一个约定,蓝图名称以BP_开始。(译者:约定规范很重要,更多可以参考Github上的UE5规范)
4. 双击此蓝图,打开蓝图编辑器。
5. 在Components面板上,点击Add按钮,选择Static Mesh ,如下图所示。这个静态网格将在视觉上代表这个蓝图。
图1 - 15添加一个静态网格组件
6. 在Details面板上,有一个名为Static Mesh的属性,它有一个下拉选择框。点击下拉菜单,选择名为SM_Chair的静态网格属性。这个静态网格资源是初学者内容 (入门包/新手包)的一部分。下图展示了选中的SM_Chair:
图1 - 16选择静态网格资源
7. 让我们添加另一个组件。点击Components面板的Add按钮,在搜索框中输入 rotation movement。
8. 点击旋转移动组件(RotatingMovement)添加它。默认情况下,这个组件会围绕z轴旋转蓝图,这里我们不需要改变它的属性。
9. 点击编译按钮,保存蓝图。(译者:这个步骤很重要,可以让蓝图更改在运行时生效)
10. 在关卡编辑器中,从内容浏览器中拖拽BP_RotatingChair蓝图,并将其放入关卡的某个地方。
11. 按下关卡编辑器的播放按钮(绿色三角形的),你就可以看到旋转的椅子了。你还可以用 WASD 键移动角色,用鼠标旋转镜头。你可以通过按Esc键退出正在播放的关卡。下面的截图显示了执行中的示例:
图1 - 17—旋转的椅子
总结
在本章中,我们学习了如何安装虚幻引擎,并使用可用的模板创建新项目。我们了解到蓝图主要有两种类型:关卡蓝图和蓝图类。
然后,我们探索了不同类型的面板,它们是蓝图编辑器的一部分。我们对这些面板的熟悉将在开发蓝图时有所帮助。最后,我们还利用组件创建了一个简单的蓝图。
在下一章中,我们将学习如何使用事件和动作来进行蓝图编程。
测试
1. 你可以在电脑上安装多个版本的虚幻引擎。
A. 对
B. 错
2. 关卡蓝图编辑器的面板比蓝图类编辑器多。
A. 对
B. 错
3.哪种类型的蓝图适合创建可以在任何级别重用的对象?
A. 关卡蓝图
B. 蓝图类
4. Blueprint编辑器中的哪个面板是可以添加事件和动作的?
A. 组件面板
B. 事件图表面板
C. 我的蓝图面板
D. 细节面板
5. 蓝图编辑器中的哪个面板显示了当前蓝图的变量和函数?
A. 细节面板
B. 组件面板
C. 我的蓝图面板
D. 事件图表面板
[译者] 答案也可以在英文版教程的末尾找到