原文:Unreal Engine 4 Tutorial for Beginners: Getting Started
作者:Tommy Tran
译者:kmyhy
Unreal Engine 4 是一个游戏开发工具集,能够开发从 2D 手机游戏到 3A 级主机游戏的一切。“方舟:生存进化”、“泰克肯7”和“王国之心 III”这些游戏背后使用的引擎就是它。
对于初学者来首,用 Unreal Engine 4 开发是很简单的。通过蓝图可视化脚本系统,你可以不写一行代码就创建出整个游戏。再加上一个易于使用的界面,你就可以获得一个可以运行的游戏原型。
本教程主要是让初学者入门。它涉及以下几个知识点:
为了学习这些知识,你会创建一个用于展示一只香蕉的旋转转盘。
注:本教程属于 Unreal Engine 教程系列,这个系列共 10 个部分:
- Part 1: 开始 (你正在看)
- Part 2: 蓝图
- Part 3: 材质
- Part 4: UI
- Part 5: 创建一个简单游戏
- Part 6: 动画
- Part 7: 音频
- Part 8: 粒子系统
- Part 9: 人工智能
- Part 10: 创建一个简单的第一人称视角射击游戏
Unreal Engine 4 使用 Epic Games Launcher 进行安装。进入 Unreal Engine 网站 并点击 Get Unreal 按钮(右上角)。
下载这个安装器需要创建一个账号。创建账号之后,选择下载和你的操作系统对应的版本。
下载并安装完安装器之后,运行安装器。会显示一个窗口:
输入 email 和密码,点击 sign in。登录之后会显示这个窗口:
在左上角,点击 Install Engine,安装器会让你选择要安装的组件:
注:Epic Games 经常升级 Unreal Engine,因此你的引擎版本会与此不同。例如我写第一稿时,版本已经升级到 4.14.3! 只要你的版本不低于 4.14, 你就可以使用本教程。
默认选中的是 Starter Content、Templates and Feature Packs 和 Engine Source。就保持这样的选择不变。它们分别是:
拖动这个列表,还有几种不同的平台。如果你不打算支持某个平台,请让它反选。
选好组件之后,点击 Install。安装完成后,引擎会在 library 中显示。接下来我们创建项目。
点击 Launch 按钮打开项目浏览器。在项目浏览器中,点击 New Project 标签页。
点击 Blueprint 标签页。这里,你可以选择一个模板。但是,因为我们想从空白开始,所以选择了 Blank template。
在下面,你会发现有更多的设置。
分别有这几个选项:
最后一部分设置是指定项目文件夹地址和项目名称。
点击 Folder 栏右边的 3 个小点,可以改变项目文件夹地址。
项目名称不代表游戏名称,因此不用担心后期可以修改这个名称。选择 Name 栏的文本框,输入 BananaTurntable。
最后,点击 Create Project.
创建完项目,编辑器会打开。编辑器分成了几个区域:
光有一个圆桌却没有要陈列的东西有什么用?请下载香蕉模型。里面有两个文件 Banana_Model.fbx 和 Banana_Texture.jpg。当然,你可以用自己的模型。但你怎么来使用这个该死的香蕉呢?
在 Unreal 能够使用一个文件之前,你必须导入它。在内容浏览器,点击 Import。
通过文件浏览器,找到 Banana_Model.fbx 和 Banana_Texture.jpg。框选住两个文件,然后点击 Open。
对于 .fbx 文件,Unreal 会提供几个导入选项。确保 Import Materials 未选中,因为你会创建自己的材质。其它设置保持不变。
点击 Import。这两个文件就显示到内容浏览器中了。
在导入文件时,实际上它是不会保存到项目中的,除非你明确地这样做。你可以用右键点击这个文件,选择 Save 就可以保存它们了。还可以选择 File\Save All 来一次性保存所有文件。确保经常使用保存功能。
注意在 Unreal 中模型被称为网格。选择你已经有一个香蕉的网格了,可以将它放到关卡中了。
选择关卡看起来空空的,让我们放点东西。
要添加网格,左键将 Banana_Model 从内容浏览器中拖到视口。放开鼠标左键,就可以将网格放下。
关卡中的对象是可以移动、旋转和缩放的。它们的快捷键分别是 W、E 和 R。然后使用操纵杆:
如果你近距离查看香蕉,你会发现它根本不是黄的。事实上,它是灰色的。要给香蕉一些颜色和细节,你必须创建材质。
材质决定了某件东西的表面外观。在一个基本的关卡中,材质定义了 4 个方面:
下面是 3 种材质的例子。它们颜色相同但属性不同。每种材质都有在对应的属性上设置为较高值。另外的属性则设为 0。
要创建材质,请进入内容浏览器,点击绿色的 Add New 按钮。会弹出一个菜单显示你可以创建的 assets。点击 Material。
将材质取名为 Banana_Material 然后双击文件打开材质编辑器。
材质编辑器由 5 部分组成:
在开始编辑材质前,你必须知道节点是什么。
节点构成了材质的主体。有许多不同的节点,提供了不同的功能。
节点可以有输入和输出,用一个圆圈+一个箭头来表示。输入位于左边,输出位于右边。
材质有一个特殊的节点,就是结果节点,在 Banana_Material 中它是现成的。它是所有节点的终点。一旦你接通这个节点,就可以决定材质的最终显示。
要为一个模型添加颜色和细节,你需要一个纹理。一个纹理就是一张 2D 图片。通常,它们会投射到 3D 模型上,让它具有颜色和细节。
为了给香蕉贴图,你需要使用到 Banana_Texture.jpg。TextureSample 节点允许你在材质上使用贴图。
找到调色板,找到 TextureSample。按下鼠标左键,将它拖到“graph”窗口。
要选择纹理,首先需要选中这个 TextureSample 节点。找到详情面板,点击 Texture 右边的下拉按钮。
列表中列出项目中所有纹理。选择 Banana_Texture.
要在预览网格上查看贴图,需要将它插进结果节点中。左键点击 TextureSample 节点的白色输出按钮上,将它拖到结果节点的 Base Color 输入按钮上。
回到视口,在预览网格上查看纹理。旋转它(按下鼠标左键并拖动)查看其它细节。
点击工具栏上的 Apply 按钮,应用你的材质。然后关闭材质编辑器——这部分的工作结束了。
要将材质应用到香蕉上,你需要指定它。回到内容浏览器,双击 Banana_Model 打开它。这会显示一个编辑器:
找到详情面板 Materials 一节。点击 Element 0 右边的下拉按钮,选择Banana_Material.
关闭网格编辑器,回到主编辑器,看一下视口。你将看到香蕉现在已经贴图了。恭喜,你已经成为了一个关卡设计师了!
注:如果光线太暗,你可以在世界大纲编辑器中点击 Light Source 来改变它。在详情面板中,找到 Intensity,设置为更高的值。
香蕉看起来很好,但如果将它放到圆桌上旋转就更好了。用蓝图来创建一个圆桌很轻松。
简单讲,一个蓝图(Blueprint)表示一件”东西“。蓝图允许你为对象创建自定义行为。对象可以是某种物体(比如圆桌),也可以是某些抽象的东西比如生命系统。
想制作一辆会动的车吗?构建一个蓝图。一只会飞的猪呢?使用蓝图。一只在碰撞中爆炸的小猫?还是蓝图。
就像材质一样,蓝图使用了节点系统。这意味着你只需要创建节点然后将它们连接起来,不需要编写代码!
注:如果你更喜欢写代码,你可以用 C++。蓝图易于使用,但它们无法做到和 c++ 代码一样快。如果你不得不用到大量计算的东西,比如复杂算法,你应当使用 c++。
当然虽然你喜欢 c++,但很多时候用蓝图其实是个好主意。蓝图有这些优点:
- 通常,蓝图比 c++ 的开发速度更快。
- 易于组织。你可以将节点分成不同的模块,比如功能和图形。
- 如果你和非编程人员一起工作,修改蓝图更容易,因为它的可视化和直观性。
将对象用蓝图来创建是一种好办法。当需要提升性能时,将它们转换成 c++。
在内容浏览器,点击 Add New。在列表中选择 Blueprint Class。
弹出一个窗口,让你选择父类。你的蓝图会从父类继承所有的变量、函数和组件。花点时间了解每个类能做什么。
注:Pawn 和 Character 也是 Actor 类,因为你可以放置和生成它们。
因为圆桌只会待在一个地方不动,Actor 类最适合。选择 Actor 然后给文件命名为 Banana_Blueprint。
最后,双击 Banana_Blueprint 打开它。当窗口弹出时,点击 Open Full Blueprint Editor :
首先,在蓝图编辑器中,选择 Event Graph 标签页。
蓝图编辑器有 5 个主要的窗口:
要创建圆桌,需要两个东西:一个基座和一个陈列品。你可以通过组件来创建这两个东西。
如果一个蓝图是一辆车,那么组件就是组成车辆的构件。例如,车门、轮胎、引擎都是组件。
但是,组件不仅仅限于物理对象。
例如,要让车动起来,你需要添加一个移动组件,你甚至可以为它添加一个飞行组件让它飞起来。
在你看到任何组件之前,你需要切换到视口视图。点击 Viewport 标签页即可切换到它。它看起来像这个样子:
注:DefaultSceneRoot 组件在玩游戏时不会显示。它只在编辑器中显示。
这个圆桌用到了两个组件:
要添加底座,找到组件面板。点击 Add Component 并选择 Cylindar。
最好让底座变得更短一点。按下 R 键,显示缩放操作杆,然后将它缩短(不要管真实大小,你可以在后面修改它)。
然后来添加网格。回到组件面板,在空白地方点击左键,清除对圆柱体的选中状态。这能保证接下来的组件不会附加在圆柱体组件上。
注:如果不这样做,接下来的组件会附加在圆柱体上。这意味着它会继承圆柱体的 scale 属性。因为你缩短了圆柱体,那么接下来的组件也会被缩短。
然后。点击 Add Component,选择 Static Mesh。
要显示香蕉,选择这个静态网格组件,然后点击 Details 标签页。点击 Static Mesh 右边的下拉按钮,选择 Banana_Model。
如果它的位置不对,请移动香蕉。按 W 激活操作杆,移动它的位置。
接下来让圆桌旋转。这就要用到蓝图节点了。
和材质节点不同,蓝图节点拥有特殊的 pin 叫做 Execution pin。位于左边的 pin 是输入,位于右边的则是输出。所有节点至少有一个输入/输出。
如果节点有一个输入 pin,它前边必定有一个连接才能执行。如果有一个节点没连接,那么后续的任何节点都不会执行。
举一个例子:
节点 A 和节点 B 会执行,因为他们的输入 pin 已经有连接。节点 C 和节点 D 不会执行,因为节点 C 的输入 pin 是断开的。
在开始之前,看一眼组件面板。你会看到 Cylindar 和 Static Mesh 有缩进而 DefaultSceneRoot 没有缩进。这是因为前者是附加到 DefaultSceneRoot 上的。
如果你移动、旋转或缩放 root 组件,那么它包含的组件也会有同样动作。通过这种方式,你可以让 Cylinder 和 Static Mesh 一起旋转,而不是分别旋转。
要开始编写脚本,需要进入 Event Graph 标签页。
让某个对象旋转非常简单,只需要创建一个节点。在 graph 视图空白地方右键,打开有效的节点菜单。搜索 AddLocalRotation。因为你需要旋转底座和香蕉,你只需要旋转 root 组件即可。选择 AddLocalRotation(DefaultSceneRoot)。
注:如果没有列出这个节点,请反选菜单右上角的 Context Sensitive 选项。
在 graph 窗口中会多出一个 AddLocalRotation 节点。Target 输入会自动连接到你选择的组件。
要设置旋转角度,找到 Delta Rotation 输入,然后修改 Z 值为 1.0。这将导致蓝图沿 Z 轴旋转。值越大,转速越快。
要不断地旋转,你必须逐帧调用 AddLocalRotation。要逐帧调用,需要使用 Event Tick 节点。它已经在你的 graph 视图中了。如果没有,用前面一样的方法创建一个。
将 Event Tick 节点的输出 pin 拖到 AddLocalRotation 节点的输入 pin。
注:用这种方法,旋转速度取决于帧率。这意味着机器越慢圆桌的转速越慢,反之亦然。这对于本教程来说是可以的,因为我让事情简单化了,但在后面的教程中我会介绍如何解决这个问题。
最后,点击工具栏上的 Compile 按钮,更新你的蓝图,然后关闭蓝图编辑器。
在添加蓝图之前,在主编辑器的视口中,删除香蕉的模型。选择该模型,点击 Edit\Delete 菜单或者按 Delete 键。
添加蓝图和添加网格一样。在文件上按住左键,将它拖到视口中。
点击工具栏上 的 Play 按钮,看看效果!
注:如果你没有删除原有的香蕉模型,你可能会被警告”灯光需要重建“。如果删掉模型,则错误不再显示。
在这里下载完成后的项目。
你已经学完这篇教程,但那只是 Unreal 中极小的一部分。如果你想继续学习,请阅读本系列的下一篇教程,我将介绍 Unreal 引擎更多关于蓝图的内容。