UE-安卓游戏开发学习手册-全-

UE 安卓游戏开发学习手册(全)

原文:zh.annas-archive.org/md5/78FAB97D380A66E356B2945CC4E249E8

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

第一个虚幻引擎于 1998 年由 Epic Games 推出。这个引擎的一个很棒的特性是,由于 UnrealScript 的存在,引擎在社区中变得非常受欢迎,因为它使得修改变得非常容易和可访问。然后,在 2002 年,Epic 发布了他们的下一个引擎,虚幻引擎 2,这是对第一个引擎的巨大改进。它带来了一个叫做 UnrealEd 2(后来是 UnrealEd 3)的东西,这本质上是一个您可以用来为虚幻创建关卡的关卡编辑器。这个编辑器,再加上 UnrealScript,可以用来创建全新的游戏。该引擎提供了比其前身更好的渲染、物理和碰撞。它还支持当时的主机,即 PlayStation 2,Xbox 和 GameCube。2006 年,Epic 发布了他们的下一个,也可能是他们最受欢迎和广泛使用的引擎,虚幻 3。这在技术上是一个巨大的飞跃。这是虚幻引擎开始蓬勃发展的地方。然而,虚幻引擎 3 提供的最重要的功能可能是 Kismet。Kismet 是一个非常强大的可视化脚本工具。它的工作方式是有各种节点,可以连接起来形成一个逻辑序列,有点像流程图。Kismet 最好的部分是您不需要任何编程知识。您可以使用 Kismet 在不写一行代码的情况下制作整个游戏。对于艺术家和设计师来说,这是一个非常方便的工具,因为他们可以快速制作原型或者在自己身上尝试某个功能,而不必依赖程序员。

现在我们来到了更加现代的时代。2012 年 2 月,Epic 推出了虚幻 4,最终于 2014 年 3 月 19 日发布。虚幻引擎 4 自 2003 年以来一直在制作中。这个引擎比以前的引擎有了很大的进步。首先,它完全删除了 UnrealScript,并用 C++替换了它。在早期的虚幻版本中,如果您想修改引擎以开发游戏,您必须使用 UnrealScript 来进行修改,这意味着要学习一种新的语言。但是现在,如果您希望修改引擎,可以使用 C++来进行修改。对于引擎程序员来说,这是一个巨大的改进,因为这意味着他们可以使用他们已经了解和喜爱的语言来修改和调整任何他们希望的东西。

不仅如此,引擎的源代码也可以供开发者使用,并可以从 GitHub 存储库中下载。这意味着开发者对引擎拥有完全控制权,可以调整几乎任何东西,包括物理、渲染和用户界面。

它还提供了一个叫做热重载的功能。通常,当您想要在游戏的代码中进行更改时,您必须停止游戏,进行所需的更改,然后再次运行游戏以查看其对游戏的影响。然而,使用热重载功能,您可以在不停止或暂停游戏的情况下进行游戏中的更改。您对游戏代码所做的任何更改都会立即更新,您可以实时看到其效果。

您还可以在虚幻 4 上为各种平台开发游戏,包括 Xbox One,PlayStation 4(包括 Project Morpheus),Windows PC,Linux,Mac OS X,HTML 5,iOS 和 Android。它还支持 Oculus Rift。

Epic 做出的另一个重大改变是针对较小的独立开发者的许可模式。更具体地说,要许可虚幻开发工具包(UDK),即虚幻引擎的先前版本,开发者必须支付 99 美元的许可费,以及公司从销售中获得至少 5 万美元后的 25%的版税。然而,在虚幻 4 中,他们已经改变了结构。截至 2015 年初,虚幻引擎 4 现在完全免费下载和使用。没有许可费,没有订阅,什么都没有。您可以下载它,在其上开发游戏,并发布它,而不需要在引擎上花一分钱。只有在收入超过 3000 美元后,您才需要支付 5%的版税。

虚幻 4 提供的另一个很棒的功能是市场。市场是一个很好的地方,可以购买和上传资产。这些资产可以是动画、3D 模型、材质、音效、预制游戏等。这对于渴望成为开发者的人来说也是个好消息,他们没有资源或人力来开发这些资产。他们可以简单地从市场上购买所需的资产,并在他们的游戏中使用。开发者还可以将自己的作品上传到市场并赚取一些钱。

这本书面向对虚幻引擎 4 几乎一无所知的初学者,它涵盖了如何使用虚幻引擎 4 开发 Android 游戏的内容。本书将涵盖您开始所需了解的一切。从最基础的,比如如何下载和安装引擎,到更高级的,比如如何将完成的产品上传到 Google Play 商店,都将涵盖在内。我们将通过逐步制作我们自己的游戏来实现这一点。每一章都可以被视为制作我们游戏的一步。本书的结构使得每个后续章节都是前一章节的延续,给读者一种流畅的感觉。

本书也不会使用任何其他软件(除了 Android SDK),这样读者就不必先下载大量软件来准备好,而是专注于引擎。所有资产,如材料、静态网格等,都将是引擎本身提供的。

本书涵盖了什么内容

第一章,“虚幻 4 入门”,教您如何下载和安装虚幻引擎 4 和启动客户端。

第二章,“启动虚幻引擎 4”,讨论了项目是什么,如何创建新项目,编辑器是什么,它的用户界面以及一些您应该了解的快捷键。

第三章,“制作游戏-第一步”,涉及 BSP 刷子,教您如何使用它们来阻挡关卡,如何在材质编辑器和内容浏览器中创建材质,以及如何在 UE4 中使用灯光。

第四章,“使用角色、类和体积”,介绍了模式面板中提供的各种类型的类。这包括基本类、视觉类和体积,以及如何将它们实现到我们的游戏中。

第五章,“使用蓝图进行脚本编写”,介绍了如何使用蓝图在游戏中进行脚本编写。脚本编写是 UE4 的重要方面,因为没有互动性的游戏实际上不是游戏。我们还将介绍最常用的蓝图类型。

第六章,“使用虚幻 Matinee”,介绍了 UE4 提供的另一个强大工具,Matinee。我们将使用 Matinee 来创建游戏中必不可少的过场动画和其他动画。

第七章,“完成、打包和发布游戏”,完成了一个完全功能的游戏后剩下的唯一事情。那就是最终确定游戏,打包并在 Google Play 商店上发布游戏。

附录,“接下来做什么?”,建议您从这里开始。它涉及各种可以找到文档和教程以进一步发展您在 UE4 中技能的地方。

您需要为本书准备什么

为了阅读本书,您需要:

  • 虚幻引擎 4

  • Android 开发工具包

本书的主要目的是尽可能少地使用软件,这样您只需专注于引擎,而不必先下载大量其他软件和程序来准备。

这本书适合谁

本书面向那些对如何使用虚幻引擎 4 一无所知,并希望使用它开发 Android 游戏的开发人员。

惯例

在本书中,您会发现一些文本样式,用于区分不同类型的信息。以下是一些这些样式的示例,以及它们的含义解释。

文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄显示如下:"下一步是完成游戏,将其打包成.apk文件,并将其发布到 Google Play 商店。"

任何命令行输入或输出都将按如下方式编写:


keytool –genkey –v –keystore -*name of your project*.keystore –alias *alias_name* -keyalg RSA – keysize 2048 –validity 10000

新术语重要单词以粗体显示。您在屏幕上看到的单词,例如菜单或对话框中的单词,会以这样的方式出现在文本中:"从主页,点击屏幕右侧的获取虚幻按钮。".

注意

警告或重要说明会出现在这样的框中。

提示

提示和技巧会出现在这样。

第一章:使用虚幻 4 入门

问候!如果您拿起了这本书,很可能您对使用 UE4 在 Android 设备上开发游戏感兴趣。本书将解释您使用 UE4 所需的一切。从最基础的,如下载和安装软件,到更高级的,如打包您完成的游戏并将其移植到您的 Android 设备上,本指南将覆盖一切。您可以在 UE4 上为各种平台开发游戏,但我们将专注于 Android 平台。

在这个介绍性的章节中,我们将涵盖以下主题:

  • UE4 及其提供的功能

  • 下载和安装 UE4

  • 引擎启动器及其用户界面

  • 指南中的预期内容

预期内容

学习如何使用游戏引擎可能是一项艰巨的任务;您可能不知道从何开始,UE4 也不例外。然而,一旦您掌握了它,您很快就会发现它实际上是多么强大和直观。有什么比通过实际制作游戏来教您如何使用游戏引擎更好的呢?本书将教会您所有您需要知道的内容,以便您能够使用 UE4 在 Android 平台上开发游戏,并在此过程中制作一个真正的可玩游戏。背后的原因很简单;仅仅谈论 UE4 提供的功能并逐一演示它们并不是学习如何开发游戏的有效方法。然而,如果有人通过在游戏中实现这些功能来解释它们,那将更加有效,因为您将更好地理解每个功能如何影响游戏和其他功能。

在本指南中我们要制作的游戏叫做Bloques,这是一个第一人称解谜游戏,玩家的主要目标是解决一系列的谜题以便继续前进。随着玩家的进展,谜题会变得越来越复杂和难以解决。至于游戏的范围,它将包含四个房间,每个房间都有一个谜题,玩家必须解决才能进入下一个房间。

选择解谜游戏的原因是解谜游戏在脚本编写和关卡设计方面有更复杂的系统。在本指南中,诸如蓝图脚本编写和关卡设计等内容将通过解谜游戏得到更好的展示。尽管游戏将在随后的章节中得到详细解释,但游戏特性的高级概述如下:

  • 一个完全渲染的可玩 3D 环境,有四个房间。

  • 交互式环境元素。

  • 玩家必须解决每个房间中的一系列谜题,以便进入下一个房间。随着玩家的进展,谜题变得更加复杂和难以解决。

  • 游戏将被优化并移植到 Android。

这本指南旨在为 UE4 奠定基础,使您能够进一步建立知识,并真正有能力开发您一直想要制作的游戏!

最后的建议是实践!教程和指南只能做到这么多。其余的取决于您。真正掌握 UE4,或者任何东西,唯一的方法就是实践。不断尝试,制作小型原型,保持与最新的发展和新闻保持联系,并与社区互动。

系统要求

在您开始下载 UE4 之前,您首先需要确保您的系统能够运行它!UE4 适用于 Windows 和 Mac OS X。以下是每个系统的系统要求:

  • Windows 7/8,64 位(或 Mac OS X 10.9.2 或更高版本)

  • .NET 4.0

  • DirectX 10(Mac:OpenGl 3.3)

  • 8 GB 的 RAM

  • 四核英特尔或 AMD,2.5 GHz 或更快

  • NVIDIA GeForce 470 GTX 或 AMD Radeon 6870 HD 系列或更高

  • 至少 9 GB 的硬盘空间(Mac OS X 为 8 GB)

下载和安装 UE4

下载和安装 UE4 的过程非常简单;只需按照以下步骤进行:

  1. 转到虚幻的官方网站(www.unrealengine.com/)。主页看起来像下面的截图:下载和安装 UE4

关于 UE4,您需要了解的一切都可以在这里找到,包括最新消息、引擎的最新版本、博客更新、最新的市场条目等等。从 2015 年开始,该引擎已经免费下载。

除了 UE4 主页,建议您访问docs.unrealengine.com/latest/INT/。这里有关于如何使用 UE4 的文档和视频教程。Epic 拥有一个庞大、活跃且友好的社区,总是愿意通过论坛帮助面临问题的任何人。

注意

您可以通过在主页上悬停在社区标签上直到菜单下拉,然后点击论坛来访问论坛,或者您也可以简单地访问forums.unrealengine.com/寻求帮助。或者,您也可以通过访问answers.unrealengine.com/来寻求AnswerHub的帮助。

  1. 从主页上,点击屏幕右侧的获取虚幻按钮。点击它将带您到订阅页面,如下所示:下载和安装 UE4

  2. 要下载和安装 UE4,您必须创建一个账户。要创建一个 Epic Games 账户,只需填写所需信息,并按照说明操作。

  3. 要下载引擎启动器,只需登录。在您的账户页面上,您可以访问您的个人资料、账单历史、以前的交易等。下载和安装 UE4

  4. 现在您已经设置好了账户,您可以下载 UE4。根据您的设置,您可以下载 Windows 版本或 Mac 版本。要下载,在最新下载下,点击下载按钮,您将下载引擎启动器。

  5. 要运行安装程序,只需双击UnrealEngineInstaller-版本号.msi(如果您使用 Windows)或UnrealEngineInstaller-版本号.dmg(如果您使用 Mac)。按照步骤安装引擎启动器。

  6. 安装完成后,运行启动器。您应该会遇到以下屏幕。下载和安装 UE4

这是登录界面。只需输入您用于订阅的电子邮件地址和密码,然后点击密码旁边的箭头按钮或按Enter键,即可登录。

  1. 登录将打开引擎启动器。我们将在稍后详细讨论它及其功能,但现在,您只需要点击,然后点击引擎旁边的添加版本按钮。这样将创建一个插槽。您可以使用版本下拉菜单在您添加的版本插槽中选择一个版本号,然后您可以点击安装按钮,您选择的 UE4 版本将开始下载。

就是这样!您现在已经在您的 PC(或 Mac)上下载并安装了 UE4。要启动引擎,只需点击启动器左上角的启动按钮,下面是账户名称,然后您就可以开始了。如果需要,您还可以启动以前的引擎版本。点击启动按钮旁边的向下箭头将打开一个菜单,列出了所有的引擎版本,要启动它们,只需点击您希望运行的版本。

下载和安装 UE4

或者,您也可以点击按钮,从那里选择要运行的引擎。您系统上安装的所有版本都将列出,您可以通过点击启动按钮来简单地启动列表中的任何版本。

下载和安装 UE4

但是等一下!在我们准备开始使用 UE4 之前,我们还有一些事情要讨论。让我们快速看一下目录结构。

Windows 目录结构

UE4 的默认安装位置是C:\Program Files\Unreal Engine\。您可以在安装过程中更改此位置。打开目录后,您会发现每个引擎版本都有自己的单独文件夹。比如,您在系统上安装了 UE4 的 4.1、4.2 和 4.3 版本。您将找到所有三个版本的单独文件夹,即4.14.24.3。以下截图将让您更好地了解:

Windows 目录结构

每个引擎版本都有自己的文件夹。除此之外,还有另外两个文件夹,即DirecXRedistLauncher

Windows DirectXRedist

DirectXRedistDirectX文件的存放位置。该文件夹还包含安装文件,您可以从中安装DirectX

启动器

Launcher文件夹包含引擎启动器的所有文件。Launcher文件夹包含以下子文件夹:

  • Backup:UE4 具有一个出色的功能,可以让您创建工作的备份。如果开发人员犯了一个无法修复或难以修复的错误,或者引擎在开发过程中崩溃,那么他们不需要重新做所有的工作,他们的工作备份将存储在Backup文件夹中,这样他们可以从上次离开的地方继续。

  • Engine:该文件夹包含构成引擎的所有代码、库和内容。

  • PatchStaging:偶尔,Epic 会发布新版本的 UE4。截至 2015 年,最新版本是 4.7.6(撰写时可用预览版本 4.8)。在下载过程中,当前下载版本的所有数据都存储在PatchStaging文件夹中。

  • VaultCache:稍后将在本章中解释,您现在需要知道的是,您在市场上购买的所有内容都包含在Vault中。VaultCache包含所有已购买项目的缓存文件。

4.X 文件夹

在我们讨论4.X文件夹之前,您应该知道 UE4 的所有版本(4.1、4.2、4.3 等)都是相互独立的。这意味着您不需要先前的版本来运行后续版本。例如,如果您希望运行 4.4 版本,那么您不需要下载 4.0、4.1、4.2 和 4.3 版本来运行它。您只需下载 4.4 版本并使用它而不会出现任何问题。这就是为什么 Unreal 4 的每个版本都有一个单独的文件夹的原因,每个版本都被视为一个独立的实体。

所有4.X文件夹,虽然分开,但包含相同的子文件夹集,因此它们被分组在一起。以下是子文件夹:

  • Engine:类似于启动器的Engine文件夹,其中包含构成引擎的所有源代码、库、资产、地图文件等。

  • Samples:UE4 有两个示例地图,Minimal Default 和 Starter Map。该文件夹包含所有内容,包括资产、蓝图等。

  • Templates:UE4 提供各种类型游戏的模板,例如第一人称、第三人称、2D 横向卷轴、俯视等。每种类型的所有内容和源代码都包含在这里。

引擎启动器

引擎启动器是在运行引擎后打开的窗口。它充满了对您非常有用的功能和资源。首先,我们将看一下引擎启动器的用户界面、其分解、所有位置、功能等。

打开引擎启动器后,您将看到以下窗口:

引擎启动器

在左上方有三个标签,虚幻引擎虚幻竞技场堡垒之夜。默认情况下打开的是虚幻引擎标签,其中包含了您在上一张截图中看到的内容。

虚幻竞技场标签是您可以找到有关最新《虚幻竞技场》游戏的信息和链接的地方。

引擎启动器

如前所述,Epic 的最新项目《虚幻竞技场》是一个项目,Epic 接受并鼓励社区的内容,比如武器皮肤、玩家皮肤、关卡等。在这里,您可以下载最新的《虚幻竞技场》,购买其他社区成员创建的内容,以及获取有关《虚幻竞技场》的所有最新新闻和更新。

最后一个标签是堡垒之夜标签。Epic 目前正在进行另一个项目,即《堡垒之夜》。

引擎启动器

在撰写本文时,Alpha 版本可用。您可以注册参与,并向开发人员提供反馈,以及从该标签访问官方 Facebook 页面、Twitter 页面、Instagram 账户和 Twitch 直播。

在右上角的面板上有两个按钮,好友列表按钮和设置按钮。当您点击好友列表按钮时,它会打开一个窗口,您可以在其中管理好友列表,比如添加和删除好友,查看谁在线等等。您还可以将自己的状态设置为在线离开

下一个按钮是设置按钮,在这里您可以找到关于引擎启动器的某些选项,比如访问支持页面,查看启动器日志,退出启动器等等。

在左上方是启动按钮,如前所述,它会启动引擎。在它下面有几个面板,每个面板包含不同的内容。让我们逐个查看这些面板。

新闻

新闻面板包含有关 UE4 和 Epic 的所有最新新闻和更新。从这里,您可以访问有关当前/最新版本 UE4 的最新文章,市场发布的最新内容,有关特定主题的最新教程系列,Twitch 回顾等等。这是了解 Epic 和 UE4 周围事件的最佳途径。

注意

新闻部分定期更新,因此建议定期查看新闻部分。

学习

正如名称所示,这里是您可以找到有关 UE4 的所有教程和文档的地方。学习部分提供视频教程,比如如何使用蓝图,书面教程,其中包含有关如何使用 UE4 的逐步说明,最后还有游戏内容示例,这些是已经设置好的项目文件,包括关卡、灯光、资源以及蓝图脚本,这样您可以亲自看到每个部分的作用并进行实验。

学习部分的顶部有三个按钮,分别是文档视频教程社区维基。点击文档会将您发送到 Epic 官方的虚幻引擎 4 文档页面,涵盖了诸如如何使用编辑器、蓝图、Matinee 等各种主题。

视频教程按钮将带您到 Epic 的视频教程页面,所有内容都被整齐地分类。每个类别都有一定数量的系列。一个系列包含一系列涵盖特定主题的视频教程。例如,蓝图类别目前有六个系列,包括介绍、如何创建库存、第三人称游戏创建等。

最后,社区维基是一个活跃的维基页面,人们可以在上面发布教程、代码、项目、插件等。这是获取用户内容和找到其他开发者创建的教程的好方法。值得一提的是,Epic 目前正在开发他们的最新项目,虚幻竞技场。这个标题的一个很棒的地方是,他们也接受并实施社区创建的内容。这包括开发核心游戏功能、关卡、角色、枪支、HUD 图形等。

注意

如果您有兴趣为项目做出贡献或对整个项目感兴趣,只需转到维基的虚幻竞技场部分,它将为您提供有关项目的所有必要信息。在此之下,是各种基于类型分类的教程,您可以查看/下载并了解更多关于 UE4 及其功能的信息。

市场

市场是开发人员可以购买资产的地方。缺乏人力或资源来创建资产的开发人员可以购买并在他们的游戏中使用它们。这些包括网格、材料、动画集、绑定的角色、音频文件、音效、项目和教程等。市场中的某些项目,例如 Epic 自己的项目是免费的。它们主要是教程项目文件,已经设置了一个示例关卡来展示 UE4 提供的各种功能。这些项目文件还设置和实施了所有的关卡蓝图,以便用户可以看到它们,并进行实验,直到他们掌握它。市场中的其他项目,由用户创建,需要付费。您可以购买的资产根据内容类型进行了整齐的分类,以方便您选择。

除了购买资产,您还可以在市场上提交自己的内容并从中赚取一些钱。在市场屏幕右上角点击提交您的内容超链接将打开 Epic 的提交页面。提交页面包含有关提交内容的所有信息。

它还有市场业务条款,其中包含有关销售收入分成、如何获得付款、何时获得付款等所有信息。它还有市场提交指南,解释了提交流程、需要提交的内容、截图的分辨率等。您还可以通过在论坛上发布内容来获取有关提交流程的更多信息和反馈。

库是列出所有 UE4 版本、所有项目和您从市场购买的所有项目的地方。让我们仔细看一下。

库

库有 3 个部分,引擎版本我的项目保险库引擎版本部分显示当前安装在您系统上的所有 UE4 版本。您可以从这里启动引擎的任何版本。此外,您还可以下载最新版本或以前的版本。要这样做,只需点击面板顶部的添加版本,就在引擎版本旁边。点击它将为您想要下载的版本创建一个插槽。

库

如前一屏幕截图所示,点击添加版本按钮会创建一个用于最新版本的虚幻 4 的插槽,本例中是 4.8.0(尽管只是预览版本)。要下载,只需点击下载按钮,它就会开始下载。

此外,你可以删除你不需要的 UE4 版本。例如,如果你有最新版本,你可能希望删除之前或旧版本的引擎,以在硬盘上腾出空间。要做到这一点,只需将光标悬停在版本槽的左上角,直到看到一个x。一旦看到x,只需点击它,相应版本的 UE4 将被卸载。另一种卸载的方法是点击启动旁边的向下箭头按钮,这将打开一个下拉菜单;从中选择删除,引擎启动器将卸载该版本。

图书馆的第二部分是我的项目部分。在这个部分,你创建的所有项目都会显示出来。

图书馆

项目按字母顺序分类。右上角是搜索栏。在上面的截图中,项目文件相对较少;因此,很容易找到特定的项目。但是,如果你有很多项目,可能会更难找到你要找的项目。在这种情况下,你可以在搜索项目选项卡中输入你需要的项目名称,它会帮你找到它。

在项目缩略图的右下角,你可以看到项目是在哪个版本的引擎中创建的。例如,在上面的截图中,项目Effects是用 UE4 的 4.0 版本创建的。如果你打开该项目文件,启动器将启动 UE4 的 4.0 版本。然而,如果你没有相应的版本,那么在启动项目时,你将被要求选择你希望在哪个已安装的版本中启动项目文件。在做出选择后,它将把项目转换为与你选择的版本兼容,并启动它。然而,在转换项目时要小心,因为可能会出现一些意外问题。建议在转换之前创建项目的备份副本。

要启动一个项目,双击缩略图。除了打开一个项目,你还可以执行其他操作。右键单击缩略图会打开一个菜单。点击删除将删除相应的项目。点击克隆将创建项目文件的副本,点击在文件夹中显示将打开存储在系统上的所有项目文件的文件夹。

最后,还有Vault。你在市场上购买的所有物品都包含在Vault中。

图书馆

上面的截图展示了Vault的样子以及物品是如何排列的。左边是物品的缩略图,然后是物品的名称。名称下面是该物品占用的空间量。名称下面的蓝色i图标是关于兼容性的信息。将光标悬停在i上会显示该物品与哪些版本的 UE4 兼容。

兼容性也显示在缩略图的右下角,类似于我的项目。让我们以 Vault 中的第一件物品为例,即动画起始包。在缩略图上写着4.4-4.6。这意味着动画起始包与 4.4、4.5 和 4.6 版本兼容。

你可能已经注意到,某些物品有添加到项目选项,而其他物品有创建项目选项。例如,动画包、资产、材料和音频文件可以添加到你已经创建的任何项目中,并且可以在你的级别中使用。项目和展示有创建项目选项。点击它后,它将创建一个项目,并显示在我的项目中,你可以从那里打开它。此外,你可以通过点击向下箭头验证或删除任何项目,并从下拉菜单中选择相应的选项。

UE4 链接

启动器用户界面中的最后一个元素是位于左下角的 UE4 链接。UE4 链接包含指向不同网页的超链接。

UE4 链接

让我们仔细看看每一个:

  • 论坛:UE4 拥有一个庞大而活跃的社区。论坛是一个很好的地方,可以认识其他开发人员,分享您的想法,展示您的进行中的工作并获得反馈,与其他成员合作开发项目等。

论坛的讨论板按您希望讨论的主题进行了整理。有开发讨论部分,您可以在那里讨论蓝图、动画、渲染、C++游戏编程等。然后是社区部分,您可以展示您的进行中的工作并获得反馈,也可以看到其他人的作品并给予他们反馈。接下来是面向学校的 UE4 部分,专门供学生和教师讨论 UE4 和教育项目。最后是国际部分,您可以与来自您地区的开发人员互动。招募和与他人合作项目变得更加容易和方便,因为几乎所有成员都来自同一地区。

  • AnswerHub:有时,您可能会遇到问题或困难,或者有非常具体的问题需要解答,而在任何文档或教程中都找不到答案。在这种情况下,最好的做法是寻求他人和/或 Epic 工作人员的帮助。AnswerHub 是一个很好的论坛,在这里您可以通过 UE4 社区或 Epic 工作人员的帮助解决任何技术或其他方面的问题。要做到这一点,只需登录,发布您的问题,然后等待有人回复。

或者,如果您慷慨的话,您可以通过帮助他人解决可能遇到的任何问题,并在此过程中建立良好声誉,回馈社区。

  • 路线图:社区是 UE4 的重要组成部分。Epic 的开发人员希望尽可能地包含社区,并对他们的开发过程进行透明化。这一点在路线图中体现得最为明显。路线图列出了正在开发过程中的功能,并估计了这些功能将何时部署。

Epic 的社交图标位于底部。从左到右,它们依次是:

  • Instagram:您可以关注 Epic 的 Instagram 个人资料,在那里他们发布关于 UE4 的照片和视频,比如环境、活动、材料等等。他们的 Instagram 链接是instagram.com/UnrealEngine/

  • Facebook:点击这个将带您到虚幻引擎的官方 Facebook 页面,在那里,与 Instagram 一样,所有关于 UE4 和 Epic 的更新都会发布。他们的 Facebook 页面链接是www.facebook.com/UnrealEngine

  • YouTube:这将带您到官方的虚幻引擎 YouTube 页面,您可以在那里访问以前的 Twitch 直播、教程等。他们的 YouTube 页面链接是www.youtube.com/user/UnrealDevelopmentKit/

  • Twitter:如果您想在 Twitter 上关注他们,这将带您到官方的 Twitter 页面。官方虚幻引擎 Twitter 账号是@UnrealEngine

  • Twitch 直播:每周四下午 2 点(写作时),虚幻团队都会有一个 Twitch 直播,在那里他们会讨论最新消息,谈论最新版本的 UE4,新增或修改的功能,并回答观看直播的观众提出的任何问题。

总结

您现在已经迈出了成为 UE4 Android 开发人员的第一步。本章只是冰山一角;还有很多内容需要涵盖。

在这个介绍性的章节中,我们介绍了 UE4 是什么以及 UE4 提供的功能。你还学会了如何下载和安装 UE4。现在你已经熟悉了引擎启动器、它的用户界面和功能。

所有这些话题都为我们接下来的章节提供了一个很好的过渡,我们将在那里讨论编辑器。在我们开始使用它之前,重要的是你知道并理解它是什么,如何浏览它,以及它的用户界面和功能。下一章将专门讨论这些内容。所以,话不多说,让我们继续下一章吧。

第二章:启动虚幻引擎 4

现在您已经知道如何下载和安装 UE4,您应该已经准备好开始制作游戏了。然而,在我们开始制作游戏之前,有一个重要的主题需要讨论,那就是编辑器。编辑器是所有魔法发生的地方。这是您制作游戏的地方。因此,在我们继续之前,您需要了解编辑器、其功能、用户界面以及如何浏览它。因此,本章将带领您了解它。

我们将涵盖以下主题:

  • 编辑器是什么

  • 它的用户界面

  • 浏览编辑器

  • 快捷键和控制

遇见编辑器

编辑器是您制作游戏的地方。您为游戏创建的所有资产都是通过编辑器实现的。您可以在编辑器中设置环境和关卡,并且您创建的所有代码序列都可以在这里进行测试;游戏的测试、调试和打包也在这里完成。

毋庸置疑,重要的是您了解编辑器是什么,熟悉其用户界面,并知道如何浏览它,然后我们才能继续。最后,为了提高您的工作流程,您还应该熟悉一些快捷键。

虚幻项目浏览器

当您通过引擎启动器启动 UE4 时,除非您直接从库中打开了一个项目,否则虚幻项目浏览器将会打开。在虚幻项目浏览器中,您可以看到您已经创建的所有虚幻项目的列表,并且您可以打开任何一个您希望的项目。您也可以从这里创建一个新项目。

在下一章中,我们将介绍项目是什么;现在,我们只关注虚幻项目浏览器及其用户界面,如下图所示。

虚幻项目浏览器

在顶部,标签栏下方有两个标签,分别是项目新项目。每个标签都包含我们将要介绍的某些功能。

项目标签中,您可以看到并打开您在系统上存储的任何项目。顶部是搜索栏。如果您有很多项目并且难以找到特定的项目,您可以在搜索栏中简单地输入您希望打开的项目名称,它将显示与您输入的名称匹配的项目。

在搜索栏右侧是刷新按钮。如果您从市场购买了任何内容,它不会反映在浏览器中。要更新项目列表,请单击刷新按钮。刷新按钮旁边是市场按钮;单击此按钮将带您到引擎启动器的市场面板。

在搜索栏下方是我的项目部分;您创建的所有项目都显示在这里。我的项目下方是示例部分。您可以在这里找到可以从市场购买的任何游戏功能示例或引擎功能示例。

如前面的截图所示,目前显示了两个项目。您可能还注意到其中一个项目Test颜色较暗,并且缩略图右下角写着 4.4。这是因为Test项目是使用 4.4 版本创建的,而我们已经启动了 4.6.1 版本。如果我们尝试启动此项目,将会收到提示,提示说此项目是用不同的引擎版本构建的,并将有选项将项目转换为与我们当前运行的 Unreal 4 版本兼容。一旦您转换了项目,它将与您当前的引擎版本兼容。

注意

虽然转换项目升级效果很好,但降级项目(例如,将在 4.6 版本中创建的项目转换为与 4.4 版本兼容)会有一些复杂情况。首先,虽然您可以使用大部分在项目中创建的资产,但无法加载其中创建的地图,并将以完全空白的场景开始。

接下来是示例部分。从引擎特性示例、示例游戏项目等下载的任何内容都会显示在这里。我们之前讨论过的关于项目的升级和降级过程也适用于这些项目文件。

要打开一个项目,只需单击它,选定的项目将被突出显示为黄色。选择后,单击打开按钮启动它。如果您需要打开我的项目部分未列出的项目,只需单击浏览按钮,搜索项目文件并运行它。最后,在窗口的左下角有一个小复选框,上面写着始终在启动时加载上一个项目。如果选中该复选框,下次启动 UE4 时将自动打开您上次打开的项目。

转到新项目面板,我们看到以下屏幕:

虚幻项目浏览器

正如我们在前面的屏幕截图中看到的,有许多类型的模板可供选择,取决于您想要制作什么类型的游戏。例如,有第一人称游戏、益智游戏、横向卷轴游戏和车辆游戏的模板。有两种类型的模板可供选择,蓝图C++。蓝图项目不需要用户具有先前的编程经验。所有游戏功能都可以使用蓝图实现,模板还提供了特定游戏模式所需的基本蓝图集,如相机、控制、物理等。然而,C++项目需要开发人员了解 C++。这些项目为特定模板提供了基本框架,开发人员可以在此基础上制作游戏。选择蓝图项目对于缺乏编程知识的开发人员是有益的,提供了开发的便利性。然而,尽管蓝图是一个很好的工具,但它仍然不如编码灵活。通过编码,您可以更好地控制引擎,甚至可以修改它以满足您的需求。这也意味着更好地优化您的游戏。开发人员可以使用蓝图来实现功能,如果他们需要的话。

注意

创建 C++项目时,建议您在系统上安装 Visual Studio 2013 或更高版本。如果没有安装,您需要先下载并安装 Visual Studio,然后才能创建这类项目。但是,您可以使用 Visual Studio 2012,只要您从 GitHub 下载源代码,然后在 Visual Studio 2012 中编译整个引擎。但是,由于引擎启动器是使用 Visual Studio 2013 构建的,建议您安装 2013 版本。如果您使用 Mac,您将需要 Xcode 5 或更高版本。

在项目列表的右侧是突出显示的项目的屏幕截图,下面是对其的描述。

在决定使用哪个模板之后,在打开项目之前,您可以选择一些设置。首先,您可以选择在哪种硬件上开发游戏,PC/游戏机,或移动设备/平板电脑。

这将设置启动项目时的控件等。之后,您可以设置游戏中的渲染质量。您可以选择最高质量或可扩展的选项。尽管您可能希望使游戏看起来令人惊叹,但您必须记住移动设备有限制。在为移动设备开发时,建议选择可扩展。可扩展和最高质量的区别在于,可扩展中引擎配置文件经过优化以提供最佳性能。这意味着一些更昂贵的功能,如抗锯齿和运动模糊,默认情况下被关闭。最后,您可以选择是否要使用起始内容创建项目(起始内容包含材料、道具、音频文件、纹理等)。

一旦您设置了这些选项,您可以设置项目存储的位置。左侧栏显示项目存储的位置和文件夹名称。您可以将其设置为任何您希望的内容。在右侧栏,您可以设置项目的名称。最后,设置好所有这些选项后,只需点击“创建项目”按钮即可打开编辑器。

用户界面

在打开或创建新项目后,编辑器将打开。一旦打开,您将看到以下屏幕:

用户界面

编辑器是您创建游戏的地方。正如您所见,即使编辑器的用户界面被整齐地分类,仍然有相当多的按钮、菜单和面板。为了更容易地解释用户界面,我们将编辑器分成各个部分,然后逐个讨论每个部分。

用户界面

标签栏和菜单栏

在顶部,我们有标签栏。就像在互联网浏览器中一样,您可以看到当前打开的所有地图文件的标签,并且可以停靠多个视口。

标签栏和菜单栏

在标签栏的右侧,您可以看到项目名称以浅灰色写着,例如MyProject2。在项目名称旁边是发送快速反馈按钮,看起来像一个聊天气泡。想给 Epic 关于编辑器的反馈,无论是积极的还是消极的?您可以使用这个按钮。只需点击图标,打开一个菜单,选择发送积极或消极反馈,以及向 Epic 提问。在您做出选择后,会打开一个窗口,您可以选择反馈的内容,然后写下您的想法。在写下您的反馈后,点击发送,它将发送给 Epic。

接下来,我们有显示可用教程按钮,点击后会打开一个窗口,您可以选择想要查看的教程。编辑器本身提供了可用的教程。当您点击按钮时,会打开一个新窗口,显示所有可用的教程。

在标签栏下方是菜单栏。它提供了所有应用程序提供的一般命令和工具。

  • 文件:在这里,您可以创建、打开和保存关卡/地图,还可以从这里创建或打开项目(创建或打开新项目时,当前项目将关闭,编辑器重新打开)。您还可以从这里打包游戏。要这样做,只需点击文件,悬停在打包产品上,这将打开另一个菜单,选择要在哪个平台上打包游戏,然后按照说明完成流程。这里有各种设置和构建配置,我们将在后面的章节中介绍。

  • 编辑:从编辑菜单中,您可以执行撤消或重做上次操作、剪切、复制、粘贴和/或复制所选对象(或对象组)等操作。您还可以从这里访问编辑器首选项。要这样做,只需在编辑菜单中单击编辑器首选项。这样将打开一个新窗口,您可以在其中设置选项,例如切换自动保存开/关或设置自动保存的频率、更改或分配热键以及更改测量单位(厘米、米或千米)。首选项中还有更多设置可用,因此请随意探索并调整它们以适应您的游戏。

最后,您还可以设置和更改当前打开项目的设置。编辑器首选项的正下方是项目设置选项;单击此选项将打开项目设置窗口。在项目设置窗口中,您可以设置项目描述(包括为项目添加缩略图、添加描述和项目 ID)、游戏的打包方式以及项目支持的平台。

注意

编辑器首选项项目设置中有许多设置可以更改和调整以满足您的要求,因此建议您彻底查看它们。

  • 窗口:编辑器窗口是完全可定制的。除了选项卡和菜单栏之外,编辑器中的所有其他窗口都可以根据您的喜好进行自定义。在前一节中的屏幕截图是编辑器的默认布局。您可以添加、删除和移动任何您喜欢的窗口。

要这样做,只需按照以下步骤:

  1. 将光标移动到您希望移动的窗口选项卡上

  2. 按住选项卡上的左鼠标按钮

  3. 将窗口移动到您希望移动的位置

  4. 释放左鼠标按钮,窗口将被设置

有时您可能找不到窗口选项卡。例如,在前面的屏幕截图中,视口没有选项卡。这是因为它的选项卡被隐藏了。要取消隐藏它,只需单击窗口左上角的小黄色箭头。

在上述情况下,Windows 菜单就是为此而设。如果您希望在编辑器中添加另一个窗口,只需打开 Windows 菜单,选择要添加的窗口,然后单击它。这样做后,窗口将打开,您可以将其移动和设置到您想要的位置。如果您使用双屏幕,那么 Windows 菜单可能会很有用,因为您可以添加更多窗口。

  • 帮助:Epic 已尽最大努力确保他们和社区提供的教程随时易于访问,无论是在他们的网站上、引擎启动器上还是编辑器本身上。帮助菜单类似于引擎启动器的学习部分(在第一章中有描述,开始使用虚幻 4);它包含有关 UE4 的所有教程和文档的链接。在菜单栏的最右侧是搜索帮助栏。您需要找到特定的教程,而不必浏览整个帮助部分吗?在这种情况下,只需输入您希望找到教程的主题名称,它将显示匹配的结果。

工具栏

接下来,我们有工具栏,位于选项卡和菜单栏的正下方。

工具栏

它提供了对最常用的命令和操作的快速访问。

  • 保存:在最左边是保存按钮。任何开发人员都知道这个功能有多重要。一旦崩溃,所有工作都付之东流;因此,它在工具栏上是可用的,以便您可以快速访问它。

  • 源代码控制:从这里,您可以启用或禁用源代码控制,默认情况下为禁用状态。源代码控制是团队合作时的重要工具。这是一种跟踪文件更改并控制软件版本的方法。当对文件进行任何修改时,团队可以检查修改后的文件,并如果他们进行了任何更改,则发布给其他人。

要启用它,请单击按钮,这将打开一个下拉菜单,然后选择连接到源。将打开一个新窗口,要求您选择提供者。选择您想要的提供者,然后单击接受设置。启用后,您可以检查其他团队成员所做的任何修改,并发布您自己所做的任何修改。

  • 内容内容按钮打开内容浏览器。这类似于虚幻引擎 3 中的内容浏览器。因此,如果您熟悉它,您应该不会对新版本有任何问题。对于那些没有使用过虚幻引擎 3 的人,内容浏览器是可以找到所有资产、代码、关卡等的地方。

  • 市场:您突然意识到您的游戏需要一个或多个资产;而不是再次打开引擎启动器,只需单击此按钮即可转到引擎启动器的市场部分,您可以浏览和购买所需的项目。

  • 设置:这类似于虚幻引擎 3 中的信息设置。它列出了编辑器中最常用的设置。例如,切换角色捕捉的开/关,允许/禁止选择半透明对象,允许/禁止组选择等等都可以在这里更改。还值得一提的是,引擎的视觉设置,如分辨率、纹理渲染质量、抗锯齿等也可以在这里更改。

  • 蓝图:我们有一个专门的章节介绍蓝图;因此,这是一个重要且在 UE4 中最常用的功能之一,应该不足为奇。您可以从这里访问蓝图编辑器。

  • 电影: 这是 UE4 提供的另一个重要且常用的功能,使用它可以在虚幻电影中创建电影等。您可以从这里打开虚幻电影。

  • 视口视口

  • 播放:当您点击播放按钮时,游戏会在视口中正常启动,供您测试您的关卡并查看一切是否按预期运行。游戏开始后,播放按钮会被其他三个按钮替换。

  • 暂停:此按钮暂停游戏会话。暂停时,您可以恢复或跳过一帧。

  • 停止:此按钮停止游戏会话,并将您带回编辑模式。

  • 弹出:当您点击播放时,您可以控制一个角色。如果您点击弹出,您将停止控制角色,并可以在视口中移动它。

还有其他选项可以设置播放,只需单击按钮旁边的向下箭头,即可打开播放菜单。

  • 启动:当您认为您的游戏已经完成并准备好进行移植时,单击启动按钮将会将您的项目烹饪、打包并部署为可执行应用程序文件(取决于您想要在哪个平台上部署您的游戏)。

视口

位于编辑器中心的视口是您创建和查看游戏的地方。您可以在这里放置和组装所有资产,以创建您的世界。

构建:构建是 UE4 的一个非常重要的功能。当您构建您的关卡时,引擎会预先计算光照和可见性数据,并生成导航网络,并更新几何形状。工具栏

让我们仔细看一下视口。要移动,按住鼠标左键或右键,并使用 WSAD 键进行移动。要选择一个对象,左键单击它。顶部是视口工具栏,一些在左边,一些在右边。让我们逐个检查这些工具:

  • 视口选项:在工具栏的最左边,有一个向下箭头表示的视口选项。单击后,会打开一个菜单,其中包含查看视口和你想在其中看到的选项。例如,你可以切换到所谓的游戏模式,它显示场景在游戏中的样子。这意味着诸如体积、隐藏的角色和角色图标(例如,在前面的截图中,有四个角色图标)都会被隐藏。还有一个叫做沉浸模式,它使视口全屏。视口选项菜单中还有其他可以设置的选项,所以四处看看吧!

  • 视口类型:接下来,我们有视口类型菜单。有两种类型的视口,透视和正交。透视视图是完整的三维视图,在其中你可以看到三维场景。正交视图使你能够以二维方式查看世界,可以沿着XZ平面(前面)、YZ平面(侧面)或XY平面(顶部)。

  • 视图模式:有各种模式可以选择查看你的世界。通过点击视图模式按钮,你可以查看 UE4 提供的各种视图模式。默认情况下,设置的模式是Lit。在这种模式下,你可以看到场景中放置的所有光源角色渲染的级别。你可以切换到Unlit,这个模式显示没有任何光照的场景。你还可以切换到Wireframe,它只显示场景中放置的角色的线框。

  • 显示:从这里,你可以选择在场景中查看或隐藏哪些类型的角色。打开菜单后,你可以看到一个带有复选框的项目列表。如果复选框被选中,这些类型的角色在场景中是可见的。如果复选框未被选中,这些类型的角色是隐藏的。

  • 变换工具:让我们移动到工具栏的右侧。首先是变换工具,有三个图标。在一个角色上可以执行三种变换操作。第一种操作是平移,即改变世界中一个角色的位置(或坐标)。第二种操作是旋转,即围绕xyz轴旋转一个角色。第三种操作是缩放,即增加或减小一个对象的大小。你可以通过从变换工具中选择任何一个来选择要执行的操作(你也可以在详细窗口中进行此操作)。

  • 坐标系统:视口工具栏中的下一个项目,由一个球形图标表示,是坐标系统。在任何变换操作发生的两个坐标系统中:全局和本地。你可以点击按钮在它们之间切换。如果全局坐标系统处于活动状态,图标将是一个球形。当选择本地坐标系统时,图标将是一个立方体。当本地坐标系统处于活动状态时,你执行变换操作的轴将与角色的旋转对齐。当全局坐标系统处于活动状态时,它将不会与角色的旋转对齐;相反,它将与世界对齐。下面的截图向你展示了这意味着什么。在左边,本地坐标系统处于活动状态,在右边,全局坐标系统处于活动状态。Viewport

  • 表面捕捉,网格捕捉和网格捕捉值:接下来的三个工具都与平移操作有关;因此,它们被分组在一起。表面捕捉工具,用一个弯曲线条和垂直箭头的图标表示,当激活时,会导致角色在平移时捕捉到表面(BSP、其他角色表面等)。当你想要将角色放在地面上时,这很方便。只需确保角色的枢轴在底部,因为枢轴点会捕捉到表面。

网格捕捉,用网格形状的图标表示,当激活时,会导致角色在平移时以特定值移动。将世界想象成一个网格,网格中的每个单元格都有一定的大小。当激活时,如果您平移一个角色,它将捕捉到这个网格。在关卡设计中特别方便,当您希望精确放置角色并确保一切正确间隔或对齐时。这些角色将移动的值可以在网格捕捉值菜单中设置。

  • 旋转网格捕捉和旋转网格捕捉值:接下来的两个工具类似于网格捕捉,唯一的区别是这些工具用于旋转操作。当激活时,角色将按设定的值旋转(例如,10 度)。这个值可以在旋转网格捕捉值菜单中更改。

  • 缩放网格捕捉和缩放网格捕捉值:网格捕捉组中的最后一个成员是缩放网格捕捉。这适用于当您希望缩放对象时。当激活时,角色将按特定增量放大或缩小,这可以在缩放网格捕捉值菜单中设置。

  • 相机速度:从缩放网格捕捉继续,我们有相机速度。您可以使用箭头键移动相机。您可以通过在相机速度菜单中设置其速度来设置相机移动的速度。

  • 最大化或恢复视口:在视口工具栏的最后一项,在右上角,是最大化或恢复视口按钮。如前所述,您可以切换到四种视口类型:透视、前视、侧视和顶视。单击后,视口分为 4 个部分,每个部分中有一个视口类型。以下截图显示了这是什么样子:

\

视口

左上角是侧视图;右上角是前视图;左下角是透视图;右下角是顶视图。每个窗口都有自己的视口工具栏。您可以通过单击所需最大化的视口中的最大化或恢复视口按钮来最大化任何视口类型。在设计关卡和放置资产时,此视口设置最常见,因为您希望确保它们从各个方向正确对齐。因此,准备频繁在这些设置之间切换。

模式

模式窗口包含编辑器中的各种模式。根据您在编辑器中希望执行的任务,您可以从此面板选择要切换到的模式。

模式

有五种模式,由五个不同的图标代表,你可以切换到这些模式。这些是:

  • 放置模式:这是默认模式。用于将角色放置到您的关卡中。角色是您在游戏中放置的任何东西;这包括静态网格、灯光、触发器、体积等。这类似于其他游戏引擎中使用的实体对象。可以在关卡中放置各种类型的角色;特别是所有类型项目中常见的角色。所有这些角色都根据其类型进行了分类,称为类。有 5 种类别。它们如下:

  • 基本:这包含非常基本的角色,以及几乎在您制作的任何游戏中都会使用的角色。这些包括触发器、相机、玩家起始点等。

  • 灯光:灯光面板包含不同类型的光源角色。例如,您有点光源,它像普通的灯泡一样发光,从一个点源均匀地向所有方向发光;还有定向光,它从一个无限远的源(如太阳)发光,等等。

  • 视觉:这个类包含影响游戏视觉的所有角色,如后期处理体积、大气雾、贴花等。

  • BSP:BSP 或二进制空间分区包含 BSP 刷子,这是创建游戏几何体的基本构建块。该类包含不同形状的 BSP 刷子,例如盒子、圆锥、螺旋楼梯等。

  • 体积:体积类包含不同的体积,每个体积都有不同的属性。例如,您有一个称为KillZ体积,它会摧毁进入其中的任何角色,包括玩家角色。这在制作陷阱和可以掉落的区域时非常有用。

  • 绘画模式:绘画模式允许您在静态网格上绘制和调整颜色和纹理。在这里,您可以设置画笔大小、衰减半径、强度等。需要注意的是,您只能在当前选择的角色上绘制,以确保您只在网格上绘制,而不是其他地方。

  • 景观模式:如果您有一个自然的户外环境,您可以在引擎中使用景观工具创建整个景观,而不是首先在 3D 建模软件中创建整个景观,然后将其导入引擎。启用景观工具时,视口中会出现一个巨大的绿色平面。这显示了一旦创建,景观的尺寸将是多少。您可以在窗口中设置尺寸和其他设置。当您满意时,只需点击模式窗口底部的创建按钮,它将创建景观平面。创建后,您可以雕刻和绘制平面以创建您的景观。要删除平面,只需点击放置模式以启用放置模式,选择平面,然后按删除键将其删除。

  • 植被模式:在这种模式下,您可以快速绘制静态网格,使用绘制选择(放置)和擦除景观平面和其他静态网格上的静态网格。如果您要放置树木、植物、灌木、岩石等东西,这是一个非常方便的工具,因此被称为植被模式。您可以设置要放置的网格的密度、画笔大小以及要在植被模式中放置的角色或角色。

  • 几何编辑模式:最后,我们有几何编辑模式。如前所述,BSP 刷子是您游戏几何体的基本构建块,非常有用。但是,提供给您的 BSP 刷子是特定形状的。如果您需要 BSP 刷子是不同形状的,您可以切换到几何编辑模式,然后手动自定义您的 BSP 刷子。

最后,如果您想要找到特定的角色,您可以在顶部的搜索栏中输入其名称,它会显示与您输入的名称匹配的角色。

世界大纲

世界大纲以分层格式显示场景中的所有角色。您可以从场景大纲窗口中选择和修改角色。这是一个很好的方式来跟踪场景中的角色。在制作相对较大的场景时,开发人员常常会忘记从场景中移除一些不再需要的角色。结果是,这些角色会留在场景中,在游戏运行时占用不必要的内存。世界大纲是防止这种情况发生的一种方式。

世界大纲

世界大纲中可以执行的一些操作如下:

  • 创建文件夹:您可以创建一个文件夹并将角色放入其中。例如,在前面的屏幕截图中,有一个名为Lighting的文件夹,其中包含场景中存在的所有光角色。这使得跟踪您的资产变得更加容易。它还使事情看起来整洁、有序!

将角色分组到文件夹中在您想要移动某些角色而不干扰它们之间的相对位置时也非常方便。例如,假设您制作了一个室内场景,并且想要将其移动到不同的位置。您可以将房间中的所有资产分组到一个文件夹中,而不是单独移动所有资产或组合选择它们。如果要移动房间,只需单击文件夹,房间中的所有资产将被选择,您可以同时移动它们,而不会干扰它们的相对位置。要选择文件夹中的所有对象,请右键单击文件夹以打开菜单。然后,将光标移动到选择,然后单击全部后代

  • 隐藏功能:您可能已经注意到每个角色/文件夹左侧都有一个眼睛形状的图标。这是隐藏功能。如果单击它,相应的角色将在场景中隐藏。如果是文件夹,则该文件夹中的所有角色都将被隐藏。

  • 附加角色:您可以附加两个或更多角色。这是另一种相对较快的移动一组角色的方法,而不会干扰它们之间的相对位置。要这样做,在场景大纲窗口中,只需选择角色,然后将其拖动到要附加到的角色上,然后在看到弹出窗口显示角色名称附加到其他角色名称时释放它。您还可以将多个角色附加到另一个角色。

附加形式-层次结构:您附加其他角色的角色会成为某种父级角色。当您移动父级角色时,所有附加到它的角色也会移动。但是,如果移动附加的角色,则父级角色不会移动。

需要注意的一点是,要一起移动附加的角色,您必须从场景大纲中选择父级角色,然后移动它。如果您从视口中选择父级角色,只有它会移动,其他附加的角色不会移动。

在左下角,您可以看到场景中的许多角色。在右下角,有一个名为视图选项的东西,您可以根据视图选项菜单中的过滤器选择要查看的角色。

内容浏览器

所有游戏资产,如静态网格、材质、纹理、蓝图、音频文件等都显示在内容浏览器中。这是您导入、组织、查看和创建资产的地方。

内容浏览器

顶部有三个图标,添加新导入保存所有。它们的描述如下:

  • 添加新:使用此按钮,您可以创建新的资产,如材质、粒子系统、蓝图等

  • 导入:如果您想要将内容导入到项目文件中,可以使用导入功能

  • 保存所有:如果您在内容浏览器中创建或修改了资产,请单击保存所有以保存所有修改或创建的资产

在这些图标下面,我们有导航栏。如果您在内容浏览器中有很多文件夹和子文件夹,这将有助于您快速浏览它们。在右下角,有一个小的挂锁图标,默认情况下是未锁定的。如果您点击它,它将锁定所有在内容浏览器中查找的请求。在视口中,当您右键单击一个角色时,它会打开一个菜单。其中有一个名为在内容浏览器中查找的功能。当您点击它时,内容浏览器会显示资产的位置。如果锁定,当您点击在内容浏览器中查找时,它将不会显示资产的位置。相反,它将打开一个新的内容浏览器窗口,显示角色的位置。

在导航栏下方的左侧是来源面板来源面板包含您项目中所有文件夹和集合。右侧是资产视图;这显示了来源面板中所选文件夹中包含的所有资产和子文件夹。顶部是筛选器菜单。如果您只想看到某种类型的资产,比如,如果您只想看到所选文件夹中包含的材质资产,那么您可以通过筛选器菜单来实现。在其右侧是搜索栏,您可以使用它来在所选文件夹中找到特定的资产。

在资产视图的底部,您可以看到所选文件夹中包含的资产和文件夹的总数。右下角是视图选项菜单,您可以从中设置您希望在资产视图中显示的方式。例如,您可以设置是否要将项目显示为瓷砖、列表或列。

详细信息

详细面板中,您可以查看和修改当前所选角色的属性。

Details

在顶部,您可以看到所选角色的名称(在本例中为Cube06)。这是名称框,您可以将角色的名称设置为您喜欢的任何内容。在右侧是锁定按钮。默认情况下是未锁定的。当锁定时,详细面板将只显示该角色的属性或细节,即使您选择了不同的角色。

在搜索栏下方,您可以使用它来过滤您希望查看的属性。它旁边是属性矩阵按钮,它可以打开属性编辑器窗口。在右侧是显示筛选器按钮,您可以使用它来执行诸如折叠/展开所有类别、仅显示修改的属性以及在详细信息窗口中显示所有高级属性等操作。

在名称下方,有两个按钮,添加组件蓝图/添加脚本。添加组件,顾名思义,允许您向所选角色添加组件。这些组件包括静态网格、形状基元(立方体、球体、圆柱体和圆锥体)、光线角色等。这类似于世界大纲中的附加角色功能。角色以层次结构附加,所选角色为父级。

除了附加组件之外,您还可以将所选的角色转换为蓝图类。蓝图类是一个带有组件和一些代码的角色。(在其他引擎中,相当术语为预制件)。我们将在后面的章节中详细介绍这一点。

最后,在底部是属性区域,显示了所选角色的所有属性,例如位置、旋转、比例、当前使用的材质、添加和移除材质等,您可以进行修改。

快捷键和控件

我们将通过列出一些您应该了解的窗口控件和快捷键来结束我们对编辑器的讨论。记住它们!这将使浏览编辑器变得更加容易和高效。以下是您应该了解的基本控件:

控件 动作
左键 这会选择光标下的任何角色
左键 + 鼠标拖动 这会将摄像机向前和向后移动,并左右旋转
右键 这将选择光标下的角色并为该角色打开选项菜单
右键 + 拖动 这会根据鼠标拖动的方向旋转摄像机
左键 + 右键 + 拖动 这会根据鼠标移动的位置将摄像机向上、下、左、右移动
中键 + 拖动 这会根据鼠标移动的位置将摄像机向上、下、左、右移动
滚动上 这会将摄像机向前移动
滚动下 这会将摄像机向后移动
F 这会放大并聚焦所选的角色
方向键 这会将摄像机向前、向后、向左、向右移动
W 这将选择平移工具
E 这将选择旋转工具
R 这将选择缩放工具
W + 任意鼠标按钮 这会将摄像机向前移动
S + 任意鼠标按钮 这会将摄像机向后移动
A + 任意鼠标按钮 这会将摄像机向左移动
D + 任意鼠标按钮 这会将摄像机向右移动
E + 任意鼠标按钮 这会将摄像机向上移动
Q + 任意鼠标按钮 这会将摄像机向下移动
Z + 任意鼠标按钮 这会增加视野范围(释放按钮时返回默认值)
C + 任意鼠标按钮 这会减小视野范围(释放按钮时返回默认值)
Ctrl + S 这会保存场景
Ctrl + N 这会创建一个新场景
Ctrl + O 这会打开一个保存的场景
Ctrl + Alt + S 这会让您以不同格式保存场景
Alt + 左键 + 拖动 这会创建所选角色的副本
Alt + 左键 + 拖动 这会使摄像机完全旋转 360 度
Alt + 右键 + 拖动 这会将摄像机向前或向后移动
Alt + P 这会让您进入播放模式
Esc(游戏中) 这将退出播放模式
F11 这将切换到沉浸模式
G 这会切换到游戏模式

摘要

在本章中,我们仔细研究了项目浏览器、编辑器、其用户界面,以及如何浏览它以及一些重要的控件和快捷键,您应该知道。我们现在已经涵盖了您实际开始使用 UE4 制作游戏所需的一切。因此,让我们开始制作我们的游戏。

在下一章中,我们将带您了解项目是什么,您可以创建哪些不同类型的项目,如何使用 BSP 刷子,在游戏中导入和实施资产,照明等等。

第三章:构建游戏-第一步

到目前为止,希望你已经把一切都设置好了。你现在已经知道足够的知识,让我们最终开始你真正来这里的目的,使用 UE4 制作游戏。UE4 的一个很棒的特性是它很容易上手,但很难精通,因为你可以用这个强大的引擎做很多事情。我们将从制作游戏的核心元素开始,即关卡、灯光和材质。

在本章中,我们将涵盖以下主题:

  • 项目是什么,UE4 提供的不同类型的项目,加载和创建新项目

  • 我们游戏的概念、目标、类型和特点

  • 几何和 BSP 刷子

  • 将资产导入到内容浏览器和关卡中

  • 如何创建材质

  • 灯光、类型、实现和构建灯光

项目

项目是一个实体,它包含构成您的游戏的所有资产、地图和代码。创建后,您可以在该项目内创建多个关卡或场景。您可以创建并购买自己的项目文件并使用它们。大多数情况下,您可以购买的项目都是以资产和关卡根据该主题制作的主题。例如,您可以从市场免费下载Sci-Fi Hallway项目。该项目文件包含各种对象、材质和未来走廊的示例关卡设置。

创建新项目

创建新项目时,UE4 提供了许多模板供您选择,具体取决于您希望制作的游戏类型。让我们再次看看虚幻项目浏览器,以更好地理解这意味着什么:

创建新项目

在前面的截图中,我们看到有各种类型的可用模板。这些模板是您可以创建的项目文件,其中包含您需要制作的游戏类型的框架。例如,如果您想制作第三人称射击游戏或冒险游戏,您可以选择第三人称,其中包含摄像机、角色和基本的脚本机制。它还包含一个示例地图,您可以在其中测试控件和机制。要创建新项目,只需突出显示您希望创建的游戏类型,然后单击创建项目

打开现有项目

打开项目有几种方法。一种方法是通过我的项目,在引擎启动库部分。第二种方法是在虚幻项目浏览器中,在项目面板下。加载项目的第三种方法是在编辑器本身。要这样做,只需单击菜单栏中的文件以打开文件菜单,选择打开项目,然后简单地选择要打开的项目。这样做将关闭当前项目并重新打开编辑器。

项目目录结构

默认情况下,您创建的任何项目都存储在C:\Users\*account name*\Documents\Unreal Projects中。打开此文件夹,您将看到类似以下截图的内容:

项目目录结构

在前面的截图中,每个项目都有自己单独的文件夹。每个文件夹包含与该项目相关的文件和文件夹,如资产、地图、项目文件或.uproject文件等。四处看看,看看哪个文件夹包含什么,以及它们各自的作用。要删除任何项目,只需删除要删除的项目的文件夹。

Bloques

我们已经设置好了项目。我们可以开始制作我们的游戏。让我们先谈谈游戏是什么。

概念

我们在本指南中要制作的游戏是 Bloques,这是一款为安卓设计的第一人称解谜游戏。游戏的主要目标是解决每个房间中的一系列谜题,以进入下一个房间。我们要制作的游戏将有四个房间;随着每个级别的提升,谜题会变得更加复杂。

控制

玩家使用两个虚拟摇杆来控制角色,一个用于移动,另一个用于观察。所有游戏的交互,如拾取物品、打开门等,都将通过触摸来完成。

为游戏创建项目

我们需要做的第一件事是设置一个项目。在引擎启动器中,通过启动按钮启动编辑器。用于制作这个游戏的版本是 4.7.6。在虚幻项目浏览器打开后,打开新项目面板,按照以下步骤操作:

  1. 从模板部分选择第一人称,并在蓝图选项卡中选择模板。

  2. 目标硬件选项中,选择移动/平板

  3. 质量设置中,你有两个选项,最高质量可扩展的 2D 或 3D。如前所述,如果你正在制作 PC 或游戏机游戏,你应该选择最高质量,如果是移动或平板,选择可扩展的 2D 或 3D。记住这一点,选择可扩展的 2D 或 3D

  4. 在询问你是否要使用起始内容的菜单中,选择无起始内容

  5. 最后,将项目命名为Bloques

在所有这些设置之后,它应该看起来像这样:

为游戏创建项目

接下来,只需点击创建项目。我们现在已经设置好了我们的项目。编辑器打开后,你会看到一个已经设置好的测试关卡。测试关卡只是为了展示你选择的模板提供的基本功能和机制。在第一人称模板中,玩家可以移动、跳跃和射击。另一个很棒的功能是,当你将移动/平板作为目标硬件时,UE4 会自动提供两个虚拟游戏手柄,一个用于移动,另一个用于观察。这省去了不少需要编写控制脚本的工作。

然而,我们不想在这个示例地图上工作。我们想要在一个新地图上工作。要做到这一点,只需点击文件打开菜单,然后点击新建关卡。点击它将打开新建关卡窗口,其中提供了两种类型的关卡,默认空白默认关卡具有非常基本的组件,如天空盒和玩家起始角色已经设置好。

空白关卡,然而,正如其名字所示,里面绝对什么都没有设置。如果你想从零开始制作游戏,你应该选择空白关卡。由于我们的游戏将在室内进行,我们并不真的需要天空盒。因此,选择空白关卡。我们现在已经设置好了我们将制作游戏的关卡。让我们将这个关卡保存为Bloques_Game。你的视口现在会是这样的:

为游戏创建项目

BSP 刷

我们需要做的第一件事是建立我们的关卡。我们将借助 BSP 刷来完成这一点。我们在第二章简要谈到了 BSP 刷,但现在我们将稍微详细地谈论一下它们。BSP 刷为你的关卡创建了体积和表面。它提供了一个快速简便的方法来阻挡你的关卡并快速制作原型。你甚至可以使用 BSP 刷来创建整个关卡。如果你没有访问 3D 建模软件,如 Maya 或 3DS Max,来为你的关卡创建资产(如墙壁、天花板等),那么你可以使用 BSP 刷来创建你的关卡。BSP 刷可以在模式面板的放置模式中选择。

默认 BSP 刷形状

如前一章所述,UE4 提供了共计七个默认刷子。以下是刷子创建的几何体的截图:

默认 BSP 刷形状

从左到右,你有:

  • 盒子刷:这会创建一个立方体形状的刷子。你可以设置盒子的长度、宽度和高度。你还可以设置立方体是否为空心。如果是的话,你可以选择设置墙壁的厚度。

  • 球体刷子:这将创建一个球形刷子。你可以设置细分的数量。增加细分的数量将使其更加光滑,更像一个真正的球体。然而,请记住增加细分的数量将增加表面的数量,因此需要更多的内存来渲染。考虑到这一点以及移动设备的技术限制,拥有一个低多边形几何和良好纹理的效果要比高多边形几何和糟糕纹理的效果更好。

  • 圆柱刷子:这将创建一个圆柱形刷子。你可以设置其半径和高度。你还可以增加或减少边的数量。与球体刷子一样,增加边的数量将增加长度上的表面数量,使其更加光滑,但将需要更多的内存来渲染。

  • 圆锥刷子:这将创建一个圆锥形刷子。你可以设置诸如高度、底部半径等属性。你还可以设置刷子中的表面数量。

  • 直线楼梯刷子:这允许你创建直线楼梯。你不需要对楼梯进行建模、展开和导入到你的关卡中,你可以在引擎中创建它。你可以设置每个台阶的长度、宽度和高度、台阶数量以及第一个台阶下方的距离等属性。

  • 曲线楼梯刷子:你还可以使用曲线楼梯刷子创建曲线楼梯。你可以设置诸如曲线的内半径、曲线的角度(曲线的角度意味着楼梯会弯曲多少。你可以将其设置为 0 到 360 度之间的任何值)、台阶数量以及第一个台阶下方的距离等属性。最后,你还可以设置是否希望楼梯顺时针或逆时针弯曲。

  • 螺旋楼梯刷子:最后,我们有螺旋楼梯刷子。螺旋楼梯和曲线楼梯的区别在于螺旋楼梯可以重复包裹自身,而曲线楼梯不能。你可以设置诸如内半径、宽度、高度、每个台阶的厚度、台阶数量以及整个螺旋中的台阶数量等属性。最后,你还可以设置选项,比如是否希望楼梯的底部和/或表面是倾斜的还是阶梯状的,以及是否希望螺旋是顺时针还是逆时针的。

上述刷子类型可以通过放置/BSP下的模式面板使用添加或减去刷子类型来创建几何图形。当一个刷子被添加到你的关卡并用于创建几何图形时,添加刷子类型将在放置的任何地方添加几何图形。减去刷子类型将移除任何与添加几何图形重叠的几何图形。

除了这些设置,你还可以设置几何图形每个表面的属性,比如平移、旋转、翻转和缩放U和/或V坐标。当你将材质应用到它们时,你可以看到它们的效果。

最后,你还可以使用刷子创建体积,比如触发体积、阻挡体积、造成疼痛的体积等等。

编辑 BSP 刷子

假设你想使用 BSP 刷子创建几何图形,但你需要的形状不是七种默认形状之一。在这种情况下,你可以使用几何编辑模式创建自己的刷子。它位于模式面板的最右侧。单击它以切换到几何编辑模式。

编辑 BSP 刷子

在上述截图中,你可以看到当你切换到几何编辑模式时,几何图形中的所有顶点、面和边。你可能也注意到顶点的大小已经增加。在这种模式下,你可以选择整个刷子、一个面、一个顶点或几何图形的一个边。

在模式面板中,您可以看到几种操作,如创建删除翻转等。有些您可以执行,而其他则不行。您可以执行哪些操作取决于您选择了什么(例如顶点、边缘或面)。

使用 BSP 刷子堵住房间

现在我们将为游戏设计环境。制作四个房间并将它们堵住,以便玩家必须在一个房间解决谜题才能进入下一个房间。

第一个房间

第一个房间将相对简单。房间将是长方体的。由于这是玩家的起点,他/她将在这个房间里介绍机制,如移动、观察、拾取和放置物体。玩家只需拿起钥匙方块并将其放在基座上即可打开门。通过这个简单的任务,玩家还将了解每个房间的主要目标。

所以让我们从制作地板开始。我们将使用Box Brush。要添加Box Brush,只需在BSP下的模式面板中单击Box,然后将其拖放到视口上。在详细信息面板中,将刷子的尺寸设置为2048 x 2048 x 64。我们希望这个房间相对较小,因为谜题很简单,而且为了避免不必要的行走,因为玩家可能会感到无聊。

第一个房间

之后,让我们现在制作墙壁。同样,我们将使用一个 Box BSP 刷子来制作它们。将尺寸设置为2048 x 64 x 1024。制作完一面墙后,只需单击并按住Alt键并移动墙壁以创建一个副本,然后将其放在房间的另一侧。

注意

使用 BSP 刷子时,将视图模式切换为未照明。否则,您将无法看到表面,并且每次引入表面时都必须构建照明。

对于相邻侧的墙壁,让我们将尺寸设置为64 x 2048 x 1024。与其他墙壁一样,只需复制 BSP 刷子并将其移动到房间的另一侧。

第一个房间

最后,对于天花板,只需复制地板并将其拖放到墙壁上方。

注意

为了防止光线渗透和其他与照明和渲染有关的问题,请确保任何刷子之间没有间隙。切换到顶部侧面正面视图,确保所有墙壁和天花板都完美对齐。

这个房间现在需要的是一个门的洞。否则,玩家将被困在第一个房间,无法前进到下一个房间。我们将借助减法 BSP 刷子来做到这一点。

要创建一个减法刷子,将Box Brush拖放到级别上,并在详细信息面板中将刷子类型设置为减法。将其尺寸设置为64 x 256 x 256。将这个减法刷子放在房间较短一侧的任何墙上。

第一个房间

最后,让我们在门附近添加一个基座,玩家必须将钥匙方块放在上面才能打开门。

第一个房间

现在,我们已经堵住了第一个房间。让我们继续下一个。

第二个房间

在第二个房间,我们将为玩家增加一些挑战。进入第二个房间后,中间将有一扇大门。玩家可以通过触摸屏幕打开门。然而,一旦他/她抬起手指或离开门,门就会关闭。玩家右侧将有钥匙方块;然而,它被困住了。为了解锁钥匙方块,玩家必须走过门,取回另一个方块,将其放在门附近的平台上,解锁钥匙方块,将其放在基座上,然后前进到下一个房间。

在第一个房间中,我们分别创建了每个表面(墙壁、地板和天花板)。我们可以使用另一种方法来创建我们的第二个房间。为此,我们将利用刷的中空属性在详细面板中。

说到这里,选择盒子刷,并将其拖到场景中。接下来,将其尺寸设置为2048 x 1544 x 1024,并将其位置放在第一个房间旁边(记得将其放在有门的墙旁边)。将其位置设置如下截图所示:

第二个房间

一旦定位好,选择刷,转到详细面板并勾选中空。一旦勾选,将会出现一个新的设置,墙壁厚度。将其值设置为128(确保我们在前一个房间中用于门的减法刷重叠在两面墙上;否则,你将看不到门)。

第二个房间

就是这样!我们已经完成了第二个房间的布局,而不必花费大量时间放置房间的每个部分,并确保它们正确对齐。剩下要放置的只有基座和通往第三个房间的门的洞。对于门,只需像我们为第一个房间所做的那样,创建一个尺寸为64 x 256 x 256的减法刷,然后将其放置在房间的另一侧。或者,复制第一个房间的减法刷,然后将其副本移动到房间的另一侧。

最后,为了完成一切,我们将在这个房间中添加两个基座。一个基座将放在房间中间附近,那里将会有一个大门。玩家必须将第一个钥匙立方体放在这个基座上才能解锁第二个钥匙立方体。

第二个房间

第二个基座放在房间的另一侧,玩家必须将钥匙立方体放置在那里,才能打开通往第三个房间的门。

第二个房间

通过这样,我们已经完成了第二个房间的布局。现在让我们继续到第三个房间,那里的事情开始变得有趣起来。

注意

记得要经常保存,这样在引擎突然崩溃或出现其他技术问题时,就不会丢失你的工作。要保存,只需点击Ctrl + S,或者点击视口工具栏上的保存按钮。

第三个房间

到目前为止,玩家应该已经了解了游戏中的基本机制和控制。现在让我们在第三个房间给他/她一个更大的挑战。进入第三个房间后,玩家和通往最终房间的门之间会有一个坑。为了能够穿过坑,玩家将需要一座桥。

为了画出桥梁,玩家必须引导一个由 AI 控制的物体到一个开关上。这个物体将沿着一条路径移动。然而,一些部分缺失。玩家可以通过放置在关卡中的开关来填补这些空隙。挑战在于确定要按下哪个开关以及何时按下它。这也依赖于正确的时机。当物体到达目的地后,桥梁将被画出,玩家可以穿过,拿到钥匙立方体,打开门,然后进入下一个关卡。

有两种构建坑的方法;第一种方法是将房间分成两部分。第一部分在坑的一侧,第二部分在另一侧。在制作好两部分后,构建坑,最后放置它们。然而,这是一种不好且耗时的构建房间和坑的方法。当渲染关卡时,我们还会有额外的表面,意味着更多的内存使用。此外,你还必须费力地将所有部分正确对齐,以确保没有空隙。

我们将使用的第二种方法是创建整个房间,并借助减法刷挖出坑。这样,我们就不必担心额外的面对齐房间的部分,而且我们还可以通过移动和/或编辑减法刷轻松设置坑的尺寸。

和往常一样,让我们从地板开始。现在,由于我们要挖出坑,地板的高度将比其他房间更高。选择Box Brush,将其尺寸设置为4096 x 2048 x 512。这将是主要区域,谜题将在这里进行。

第三个房间

由于这个房间比前几个房间更高,我们需要一些楼梯,以便玩家可以到达第三个房间。首先,添加一个小的Box Brush,将其尺寸设置为512 x 1544 x 64,并将其放在前一个房间的门附近。

第三个房间

要添加楼梯,从Modes面板中将Linear Stair Brush拖到级别上。将楼梯的宽度设置为1544,步数设置为23。将楼梯放在我们之前放置的Box Brush的边缘;最后,将第三个房间的地板放在楼梯旁边。

第三个房间

要添加坑,我们需要一个减法刷。选择减法刷的另一种方法是首先选择刷子的形状,这种情况下是Box Brush,然后在Modes面板中,在底部,您可以设置刷子类型为添加或减去。只需选择减去并将刷子拖到级别上。

我们必须确保坑足够宽,以便玩家无法跳过去,而且足够深,以便玩家一旦掉进去就无法跳出来。牢记这一点,将刷子的尺寸设置为640 x 2304 x 512。将坑放在房间的另一端。

第三个房间

现在我们要放置墙壁。我们将分几步向这个房间添加墙壁。首先,选择一个 Box 刷,将其尺寸设置为4096 x 64 x 512,并将其放在房间的较长一侧。复制并将第二面墙放在另一侧。

第三个房间

接下来,我们需要沿着通向第三个房间的楼梯和走廊放置一些墙壁。为此,将尺寸设置为1202 x 64 x 1024,并将其放在楼梯的两侧,确保它们都正确对齐,并且在刷子之间没有任何间隙。

第三个房间

在前面的截图中,您可能已经注意到走廊的墙壁和房间较长一侧的墙壁之间有一些间隙。让我们用尺寸为64 x 188 x 512的 Box 刷填充。在两侧各放一个,以填补间隙。

第三个房间

最后,我们要放置的墙在房间的远端,沿着较短的一侧。将Box Brush的尺寸设置为64 x 2048 x 512,并使用减法刷放置最终的墙壁。

第三个房间

走廊的天花板尺寸为1202 x 1544 x 64,房间的天花板尺寸为4096 x 2056 x 64

第三个房间

现在我们已经阻挡了房间,我们需要在继续第四个和最后一个房间之前添加一些东西。首先,我们要放置一些面板,上面有开关,玩家可以按下以引导物体穿过坑。只需从前几个房间复制基座并将其放在这个房间中以创建面板。将它们放在任何较长的墙壁附近,并以玩家可以看到另一面墙的方式放置。

第三个房间

最后,在门附近放置一个基座。有了这个,我们已经完成了第三个房间的阻挡。现在,让我们阻挡第四个和最后一个房间。

第四个房间

我们只剩下一个房间要挡住了。在前三个房间中,我们有不同的谜题和目标。在第四个房间,我们将结合前一个房间的所有谜题。在这个房间里,玩家的目标与前一个房间相似,引导一个由 AI 控制的对象穿过门和坑等障碍物,朝着房间的另一侧前进。对象将沿着预定义的路径移动,并持续移动直到到达目标。如果撞到门或掉进坑,它将从起始位置重置。

由于我们将有坑,房间的高度将与以前的房间相似。而且,这将是最大的房间。记住这一点,我们将通过选择尺寸为5120 x 2048 x 512盒子刷来制作地板。

第四个房间

现在我们有了地板,我们要做一些坑。再次选择减法模式,创建一个尺寸为728 x 1928 x 512盒子刷,并将其放在门附近。在这个房间里,我们将有三个坑,所以通过按住Alt键复制减法刷,创建两个副本并将它们放在地图上。

第四个房间

接下来是墙。对于较长的一侧,只需复制第三个房间的墙。在详细信息面板中,将X的值设置为5120,然后放置墙壁。复制并放置另一面墙。对于较短的一侧,您可以做同样的事情——复制并放置较短的一侧墙壁(带门的那一面)在房间的另一端。

第四个房间

接下来,复制,将刷子的Z值设置为64,并向上拖动以形成屋顶。

第四个房间

最后,我们将放置一些基座,开关将放置在那里。

第四个房间

有了这些,我们现在已经完成了挡住我们最后一个房间!

现在我们已经挡住了我们的房间,让我们放置一些资产,创建材质,并将它们应用到我们的水平上。

内容浏览器

在上一章讨论编辑器用户界面时,我们简要谈到了内容浏览器。让我们再多谈一些。内容浏览器是项目中存储和显示所有资产的地方。这些资产包括网格纹理材质骨骼网格蓝图地图文件音频文件等等。

内容浏览器

在上面的截图中,您可以看到不同的文件夹,每个文件夹都根据其中包含的内容命名。根据资产类型组织您的资产是一个良好的做法,也可以防止在项目有大量资产时后期混淆。

迁移和导入资产

在创建游戏时,您最需要的是资产,因为没有它们,您的游戏将只是一个空白地图。您会希望将为游戏创建的资产导入到项目中。为此,您需要先将它们导入到项目文件中,然后才能使用它们。目前,UE4 接受以下资产:

  • 纹理文件:这些是 2D 图像,可以导入为.jpg、“。png”、“。bmp”和.tga文件。

  • 静态网格/骨骼网格:静态网格是使用 3D 软件(如 Maya、Max、Blender 等)创建的 3D 对象。骨骼网格是可以进行动画的网格。您可以将它们导入为.obj文件,以及.fbx文件。

  • 音频文件:您可以导入音频文件,如音乐、音效、对话等(单声道),作为.wav文件。您还可以导入具有多个通道(立体声)的音频文件。

  • 脚本文件:您还可以将脚本文件作为.lua文件导入到 UE4 中。

  • IES 灯光配置文件:IES 灯光配置文件定义了弧线中的光强度。这通常用于使光线看起来更真实。这些文件也可以作为.ies文件导入到 UE4 中。

  • 立方体贴图:立方体贴图以.hdr文件的形式导入。这些文件用于绘制环境,特别是如果您的游戏有室外场景。这些文件包含有关范围内颜色和亮度的信息。

  • True Type 字体:您还可以导入各种类型的字体用于您的游戏。字体通常用于 huds、UI 等,并且可以导入为.ttf文件。

导入资产

有两种方法可以将为您的游戏创建的资产导入到项目文件中。

注意

为了演示如何导入资产,Maya 中创建了一个简单的球体,并导出为 FBX 文件。

第一种方法是通过Content Browser

  1. 单击Content Browser顶部的Import按钮。导入资产

  2. 单击后,将打开一个窗口,询问您要导入哪个资产。只需搜索您的资产所在位置,突出显示它,然后单击打开导入资产

  3. 单击打开后,将打开导入选项窗口,具体取决于您导入的资产类型。满意导入设置后,单击导入,资产将导入到您的项目文件中。导入资产

将资产导入到项目的第二种方法是简单地拖动要导入的资产并将其放入Content Browser中。要这样做,只需从存储位置单击并拖动资产,然后释放左鼠标按钮到Content Browser上。释放左鼠标按钮时,将打开导入选项窗口,与第一种方法中提到的窗口类似。再次,满意设置后,单击导入,资产将被导入。

迁移资产

有时,您可能需要来自不同项目文件的某些资产。在这种情况下,之前提到的导入资产的方法将不起作用,因为项目的内容保存在您的系统上,格式为.uasset文件或.umap文件。因此,UE4 将无法导入它们。因此,您必须执行迁移资产操作。

当我们创建项目时,我们选择无起始内容,因为我们不需要所有内容。这将占用不必要的空间。但是,我们确实需要一些资产,特别是墙和地板材料。为了演示这一点,已经设置了一个带有所有起始内容的新项目。

迁移资产

这是一个带有所有起始内容的项目。我们需要的是两种材料,即M_Basic_FloorM_Basic_Wall。迁移这两种材料并按照以下步骤操作:

  1. 突出显示M_Basic_FloorM_Basic_Wall,右键单击以打开菜单。在菜单中,将光标悬停在资产操作上,并单击迁移

  2. 单击后,将打开一个窗口,告诉您以下资产将迁移到另一个项目。迁移资产

  3. 单击确定后,将打开另一个窗口,询问您要将资产移动到何处。您希望将它们存储在项目的Content文件夹中。打开时,找到您的项目文件夹(如果您记得的话,它在我的文档中),并将其存储在Content子文件夹中。

  4. 单击后,您将收到提示说资产已成功迁移

如果现在返回到 Blockmania 项目,您将看到Content Browser中的Materials子文件夹中显示了M_Basic_FloorM_Basic_Wall

迁移资产

放置演员

一旦您在Content Browser中拥有所有资产,下一步是将它们放置在游戏中。我们将使用Content Browser中的立方体网格来创建游戏中的对象,例如关键立方体,AI 控制的对象,门等。

首先,让我们制作门,在您将钥匙方块放在基座上时打开。只需从内容浏览器中拖动TemplateCube_Rounded静态网格,并将其放置在门应该放置的位置。使用缩放工具设置其尺寸,使其完美适合。

放置角色

为了使事情更加简单和方便,您可以在详细信息面板中将方块的名称更改为Door01。对于其他的门,由于洞口的尺寸相同,您可以简单地复制这个角色并放置副本。最后,由于这些将会移动并且不会在游戏中保持静止,将其移动性类型设置为可移动

提示

使用不同的视角来设置尺寸,并将门与洞口对齐。

接下来,让我们将玩家在房间中间遇到的大门放置在房间中间。再次从内容浏览器中取出TemplateCube_Rounded角色,并将其放置在第二个房间。设置其尺寸,以阻止角色移动到房间的另一侧。将其命名为Room_Door01。同样,在第四个房间中复制并放置它,但是你需要修改第四个房间的门的尺寸,因为第四个房间的尺寸与第二个房间有些不同。

放置角色

接下来,我们必须放置玩家必须收集并放置以进入下一个房间或解锁其他钥匙方块的钥匙方块。我们将再次使用TemplateCube_Rounded。将其比例设置为0.15,并将其放置在我们的关卡中。以下是四个房间中钥匙方块的放置快速概述:

  • 第一个房间:在第一个房间,我们只需要一个钥匙方块。您可以将它放在房间中间的任何地方。

  • 第二个房间:在第二个房间,我们需要两个钥匙方块。将第一个方块放在大门的一侧,将第二个方块放在另一侧。第一个方块将被锁住,玩家必须将第二个方块放在基座上才能解锁它。

  • 第三个房间:在第三个房间,我们只需要一个钥匙方块,AI 对象击中目标后将解锁它。因此,将它放在靠近通往第四个房间的门边坑的另一侧。

  • 第四个房间:在第四个房间,将钥匙方块放在房间的另一侧。当 AI 对象击中目标时,它也将被解锁。

我们已经在游戏中放置了所有必要的资产。让我们在我们的关卡中添加一些装饰性的方块。由于装饰性资产将保持静止,不会在游戏中移动,您应该将它们的移动性设置为静态。只需在地图周围放置方块,以不同的图案排列它们。

放置角色

材质

在 UE4 中,在将纹理应用到对象之前,您首先必须创建材质。材质是游戏中对象的渲染方式,它是包含许多属性的着色器集合,可以应用于对象并在游戏中渲染。更加技术性地说,当光源的光线照射到表面或对象上时,材质决定了光线如何与表面或对象相互作用(颜色、纹理、表面的粗糙或光滑程度、金属质感等)。

UE4 使用基于物理的着色。在虚幻引擎的早期版本中,材质具有一些任意的属性,比如漫反射强度、自定义光照漫反射等等。在 UE4 中,材质具有更多相关的属性,比如基础颜色、金属质感、粗糙度等等,使得这个过程更容易理解。

材质是在所谓的材质编辑器中创建的。因此,在我们开始创建自己的材质之前,让我们先谈谈它及其用户界面。

材质编辑器

材质编辑器是一个简单但非常强大的工具,您可以用它来为您的对象创建材质。例如,您可以将纹理文件应用于材质的漫反射通道,然后在您的资产上使用它。对于我们的游戏,我们将从头开始创建自己的材质。要访问材质编辑器,您首先需要创建一个新材质,或者双击现有材质。要创建新材质,请单击内容浏览器左上角的添加新按钮,然后选择材质,它将位于创建基本资产部分下方。完成后,您将看到创建了一个新材质。双击它以打开材质编辑器。打开后,您应该看到这个窗口:

材质编辑器

让我们首先看一下编辑器本身及其用户界面。与编辑器一样,我们将材质编辑器用户界面分成几个部分,并逐个进行介绍。

材质编辑器

标签和菜单栏

在顶部,我们有标签和菜单栏。标签栏类似于编辑器的标签栏。

标签和菜单栏

在标签栏下面,我们有菜单栏。与编辑器中的菜单栏一样,它提供了所有的常规命令和操作。它们的描述如下:

  • 文件:单击此将打开文件菜单。从这里,您可以执行诸如保存您创建的材质、从内容浏览器打开资产等操作。

  • 编辑:这将打开编辑菜单。在这里,您可以撤消或重做您可能执行的任何操作。您还可以从这里访问编辑器和项目设置。

  • 资产:从资产菜单中,您可以在内容浏览器中找到您正在创建的材质,并打开当前材质的引用查看器窗口。

  • 窗口:在此菜单中,您可以选择在材质编辑器窗口中要显示的面板,搜索图形面板中的特定节点,访问插件窗口等。

  • 帮助:最后,如果您想了解更多关于材质编辑器或需要找到问题的解决方案,您可以从这里访问维基页面和官方 Epic 文档。

工具栏

再次与编辑器中的工具栏进行比较,这里的工具栏显示了您在制作材质时可能执行的所有最常用的操作。

工具栏

  • 保存:从左边开始,由软盘表示的是保存按钮。这是保存您对材质所做的任何修改。

  • 在 CB 中查找在 CB 中查找(或内容浏览器),由放大镜表示,可以在内容浏览器中定位并突出显示您在材质编辑器中打开的当前材质。

  • 应用:接下来是应用按钮。如果您已经将当前材质应用于游戏中的对象,一旦对其进行任何修改,单击应用将更新当前场景中的材质。

  • 搜索:需要找到节点或连接吗?您可以通过单击搜索并输入您想要查找的内容来进行。当您单击它时,搜索面板将在材质编辑器底部打开。只需输入您想要查找的内容,它将在面板中给出结果。

  • 主页主页按钮将图形面板重新聚焦到材质输入描述(在材质编辑器中首先看到的节点,带有所有这些输入)。当您创建非常复杂的材质时,这将非常方便,因为您将有许多节点彼此连接,并可能会忽略材质描述。

  • 清理清理按钮会删除未连接到材质输入的任何节点。这非常方便,因为即使未连接的节点也会使材质在内存使用方面变得不必要地沉重。

  • 连接器:默认情况下,此选项已打开。关闭时,任何未使用的输入或输出引脚(未连接到任何东西的引脚)将被隐藏。这是保持工作区清洁和有组织的好方法,因为它会清除视图中的混乱。

  • 实时预览:这也是默认打开的。打开时,您对材质所做的任何修改都将在视口面板中实时更新。

  • 实时节点:启用时,它会实时更新每个节点中的材质。

  • 实时更新:当您打开此选项时,它会实时编译着色器和所有节点和表达式,每次您更改、添加、删除节点或更改参数值时都会这样做。

  • 统计:打开时,您可以在材质编辑器底部看到您创建的材质的统计信息。这可以让您了解您的材质有多重。

  • 移动设备统计:这类似于统计,但会为移动设备提供材质统计和任何错误信息。

调色板面板

调色板面板包含可以在材质编辑器中使用的所有节点。

调色板面板

所有的函数、表达式等都按类别列在这里。您可以在顶部选择类别,并使用它来过滤您想要显示的节点类型。

如果您想要找到特定的节点,您可以在下方的类别栏下搜索它。

统计面板

如前所述,统计面板显示了您创建的材质的所有统计信息。

统计面板

如果您在工具栏中打开了移动设备统计,您还将在此处看到移动设备的统计信息。这基本上向您显示了您的材质中有多少指令和着色器。这将让您了解您的材质有多大和多重。

详细面板

详细面板显示了材质的一般属性,例如材质域,这意味着您想要创建什么类型的材质。

详细面板

普通材质,例如应用于角色的材质,是表面材质。如果您希望您的材质是贴花(我们将在下一章中讨论),您可以切换到贴花等。

您还可以在此面板中设置所选节点的属性。

视口面板

视口面板是您可以预览正在创建的材质的地方。如果启用了实时预览选项,您所做的任何修改都将实时更新并在此处预览。

视口面板

默认情况下,形状原语是一个球体。您可以使用视口面板顶部的按钮切换到圆柱体、平面、立方体或材质编辑器中的特定网格。您还可以在这里切换网格的显示/隐藏,以及切换实时预览的显示/隐藏。

图形面板

材质编辑器用户界面的最后一个元素是图形面板。这是您创建材质的地方。

图形面板

在我们继续之前,有一些术语和表达式您应该知道,因为我们在本书中会经常使用它们。首先,我们有一个叫做节点的东西。节点是您连接到材质或蓝图脚本的任何东西。它可以是变量、表达式等。在上面的截图中,这里的节点将是您看到的长面板。

现在,每个节点都有输入、输出或两者。输入是节点接受的任何值或表达式,位于节点的左侧作为白色引脚。回到上面的截图,该节点接受相当多的输入,每个输入对应材质的不同属性。

输出引脚是节点返回的内容(值、表达式等),也用白色圆形引脚表示。它们位于节点的右侧。当连接到两个或更多节点时,你将第一个节点的输出引脚连接到第二个节点的输入引脚,依此类推,以创建一系列节点。

在前面的截图中,你可以看到一个带有许多输入的长节点。这是材料输入。每个输入对材料有不同的影响。你可能也注意到一些输入是白色的,而其他的是变暗的。变暗的节点是当前禁用的,不能使用。哪个输入被启用,哪个被禁用取决于材料的混合模式,可以在详细信息面板中找到并更改。例如,看一下截图,不透明度节点当前被禁用。这是因为材料的混合模式设置为不透明,所以自然地,你不能设置材料的不透明度。要启用它,你必须将混合模式更改为半透明

让我们来看一下最常用的材料输入:

  • 基础颜色:这与材料的颜色有关。底色将是什么颜色。

  • 金属度:这涉及到你希望你的材料中有多少金属光泽。

  • 高光:如果你想让你的材料光滑而有光泽,这就是你需要的节点。这涉及到材料反射多少光。

  • 粗糙度:与高光相反,如果你希望材料不光滑或崎岖,这个输入就是你需要的。

  • 自发光颜色:如果你希望你的资产发光,你可以在这里设置它,输入自发光颜色。

  • 不透明度:这涉及到你希望你的物体有多少半透明。

还有其他输入,但这些是你现在应该知道的主要输入。

应用材料

有两种方法可以将材料应用到物体上。第一种方法是简单直接的。让我们使用第一种方法来应用地板材料。我们将应用M_Basic_Floor。要应用材料:

  1. 从内容浏览器中选择M_Basic_Floor

  2. 将其拖放到地板表面上。

  3. 释放鼠标左键,材料将被应用到地板上。应用材料

我们将使用第二种方法来为墙壁涂抹材料。我们将把M_Basic_Wall应用到我们的墙壁上。要做到这一点,请按照以下步骤进行:

  1. 选择任何一个墙面。

  2. 详细信息面板中,在表面材料部分,你会看到一个名为Element 0的东西。它旁边会有一个菜单按钮,上面写着None

  3. 打开菜单。你会看到内容浏览器中列出的所有材料。只需从列表中选择M_Basic_Wall,材料就会应用到墙上。应用材料

使用任何两种方法,将材料应用到游戏中的所有墙壁和地板上。

创建材料

现在我们已经了解了材料编辑器的用户界面,并看到了如何将它们应用到物体上,让我们继续创建我们关卡的材料。

基座

首先,我们将为玩家必须放置方块的基座创建一个材料。我们将创建一个相当简单的材料。我们将创建的基座将是黄色的,并且会有点闪亮。首先,在内容浏览器中创建一个新的材料,命名为Pedestal_Material1。然后双击打开材料编辑器。

我们要做的第一件事是向Base Color输入添加一些内容。我们需要创建的是一个称为Constant3Vector节点的东西。要创建它,只需从Palette面板拖动节点并放置在Graph面板中。创建Constant3Vector节点的另一种更快的方法是按住3并在Graph面板的任何位置单击左键。节点将在您单击的位置形成。形成后,将其连接到Base Color输入。您可以将颜色设置为黄色。要做到这一点,只需选择Constant3Vector节点,在Details面板中,您将看到一个名为Constant的属性,旁边有一个黑色条。单击黑色条,将打开ColorPicker窗口。将颜色设置为黄色,然后单击确定。现在将其连接到Base Color输入。您将看到Viewport面板已更新为您所做的更改。

现在我们有了基本颜色,我们要添加光泽。为此,我们将创建一个Constant节点。同样,您可以从调色板面板拖动它,或者按住1并单击图形面板的任何位置。在详细面板中,将其值设置为0.5,然后将其连接到Specular输入。您的图形编辑器将看起来像这样:

基座

现在,您已经创建了材质,请单击保存,然后将其应用到基座上。

对于按钮所在的基座,通过右键单击Pedestal_Material1创建一个副本,选择Duplicate,将其重命名为Pedestal_Material2,在材质编辑器中,只需将基本颜色更改为蓝色,保存并应用。

基座

对于门,我们要做的基本上与我们为基座创建材质时所做的事情差不多。这里唯一的区别是我们会让门稍微透明一些,并使材质更玻璃化。说到这里,为门创建一个材质,并将其命名为Door_Material

在材质编辑器中,您需要做的第一件事是将材质的混合模式设置为半透明。之后,创建一个Constant3Vector,选择浅蓝色,并将其连接到Base Color输入。

现在,创建三个Constant节点。将第一个节点的值设置为1,并将其连接到Specular输入。将第二节点的值设置为0.5,并将其连接到Opacity输入。我们的玻璃材质现在是半透明的。然而,还有一些东西,玻璃的一个非常基本的属性——折射!折射输入位于输入面板的底部。将第三个Constant节点的值设置为0.35,并将其连接到Refraction输入。

门

我们为门创建了一个基本的玻璃材质。保存并将其应用到门上。

门

关键立方体

让我们让一组材质变得有趣一些。我们将把它变成红色。此外,我们将使其闪烁以吸引玩家的注意。创建一个材质,并命名为KeyCube_Material

首先,创建一个Constant3Vector节点,将颜色设置为红色,并将其连接到Base Color输入。这将是我们的基本颜色。对于发光效果,我们将使用线性插值函数。线性插值接受三个输入。它混合前两个输入(AB),第三个输入用作掩码(Alpha)。对于输入A,创建您为基本颜色创建的Constant3Vector节点的副本并连接。对于输入B,创建另一个Constant3Vector节点,将颜色设置为较浅的红色并连接。

我们已经有了输入。现在我们需要为Alpha输入创建一些东西。由于关键方块将会定期闪烁,我们可以使用SineCosine函数。您可以在调色板面板中找到其中任何一个。将它放在图形面板中,并连接到Alpha输入。现在,为了让SineCosine函数真正起作用,它需要一些输入数据。我们将创建一个时间输入数据节点。只需在调色板面板中输入Time,将节点放在图形面板中,并将其连接到SineCosine节点。最后,在完成所有这些之后,将线性插值连接到发光输入。

关键方块

现在,我们的主要关键方块有了一个闪烁的材质。将它应用到所有的关键方块上。

关键方块

装饰性资产

对于我们的装饰性资产,我们将创建一个可以周期性改变颜色的材质。首先,创建一个材质并命名为DecorativeAsset_Material。对于变化效果,我们将使用Rotator节点。如果您有合适的纹理,并希望它旋转,可以使用这个节点。它获取纹理UV坐标和时间函数,并用它来旋转纹理。我们将用它来改变我们的材质颜色。像往常一样,创建一个Constant3Vector,并将其颜色设置为浅蓝色。

现在,我们不是直接将它连接到基本颜色输入,而是将它连接到Rotator节点。在调色板面板中找到Rotator节点,并将其放在图形面板中。Rotator节点有两个输入,坐标时间。将Constant3Vector连接到坐标输入。创建一个Sine函数,将时间输入数据连接到它,并将其连接到时间输入。最后,将Rotator节点连接到基本颜色输入。这就是我们需要做的全部。您现在会注意到材质会周期性地改变颜色。您可以通过在Rotator节点的“详细信息”面板中更改速度设置来设置它改变颜色的速度。

装饰性资产

将这个材质应用到游戏中的所有装饰性资产上。有了这个,我们已经为我们的环境贴上了纹理。

装饰性资产

如果您测试您的关卡,您会注意到您什么都看不见。这是因为我们的关卡没有任何灯光,因此没有任何东西被渲染,您所看到的只是一个黑屏。现在让我们继续进行照明。

照明

照明是任何游戏中非常重要的元素,因为没有它,您无法看到周围的世界。UE4 提供了四种类型的照明,即:定向光、点光、聚光灯和天空光。让我们逐个讨论它们,并讨论一些您可以在“详细信息”面板中设置的属性。

  • 定向光:当您有一个室外场景并希望模拟来自太阳的光时,定向光是理想的光源类型,因为定向光模拟来自无限远处的光。定向光形成的阴影是平行的。

您可以在“详细信息”面板中设置诸如强度、颜色、是否影响世界、间接光照的强度等内容。

照明

上述截图显示了定向光以及它在关卡中的工作原理。它的图标由一个太阳和两个平行箭头组成。另一个单独的箭头显示了光线的方向。您可以使用旋转工具来设置方向。

  • 点光源:点光源模拟来自单一光源的光,均匀地在所有方向上发光,就像一个灯泡。这是我们在游戏中将要使用的主要光源。在室内场景中,这将是您的主要照明角色。照明

如你所见,点光源角色由一个灯泡表示。你看到的球体周围是衰减半径。它由一个球形线框表示,并显示了光源直接影响的范围。你可以设置强度、颜色、衰减半径、光源是否影响世界、间接光照强度等。如果你不想要单一点光源,你可以根据需要设置光源的半径或长度。

  • 聚光灯:聚光灯与点光源类似,它们都源自单一光源。然而,两者之间的区别在于,点光源在所有方向均匀发光,而聚光灯在一个方向上,以锥形发光。照明

你可能已经注意到了两个锥体。内部锥体是光线最亮的地方。当你向外径移动时,朝向外部锥体,光线变得不那么明亮,发生衰减。你可以设置这两个锥体的半径,以及光源的强度、颜色、长度和半径等。

  • 天空光:最后,我们有天空光。天空光模拟了大气和远处物体反射的光线。照明

天空光在效果上相当微妙。考虑到这一点,在前面的截图中,左边是有天空光的场景,右边是没有天空光的场景。当这两者并列时,你可以看到天空光的效果。

天空光的设置与其他类型的灯光有些不同。首先,你可以设置所谓的天空距离阈值。这是天空光角色距离任何角色被视为天空的距离。你还可以使用下半球为黑色选项,当切换时,将忽略场景下半球的光线。你还可以使用自定义立方体贴图来获得自己的天空光类型。除此之外,你还可以设置光的颜色、强度等。

移动性

所有类型的灯光都有三种移动性。在游戏运行时,你可以修改某些光源的设置。移动性部分允许你做到这一点。

移动性选项位于光源角色的详细面板的变换部分。

移动性

总共有三种类型可供选择:

  • 静态:当你将光设置为静态时,制作游戏时设置的属性保持不变,无法通过触发器或游戏过程中进行修改。一旦光照建立完成,由该光照烘焙的光信息和阴影保持静态,无法更改。对于在游戏过程中不移动或切换开/关的灯光来说,这是最合适的移动类型,因为它需要最少的内存来渲染。

  • 固定:当光源角色的移动性设置为固定时,只有强度、颜色等属性可以在触发器或游戏过程中进行修改。然而,光源在这种设置下无法移动或平移。这需要比静态光更多的内存,可以用于闪烁灯等场景。

  • 可移动:在此设置下,光照 actor 完全是动态的,除了改变强度和颜色之外,在游戏过程中它还可以移动、旋转和缩放。然而,请记住,这种类型的光需要最多的内存来渲染,因为每次在游戏中改变其属性时,它都必须实时重新计算阴影和照明信息。因此,除非在您的游戏中真正需要,否则在开发移动设备游戏时避免使用可移动光。最好使用静态光以获得最佳性能。当您将移动性切换为可移动时,游戏中的光照 actor 的图标会改变。您会看到光照 actor 下面有四个箭头。移动性

左边是移动性设置为可移动的光照 actor,右边是移动性设置为静态固定的光照 actor。

照亮环境

现在您已经熟悉了光照 actor,它们的类型和移动类型,让我们在我们的关卡上放置一些灯光。

目前,我们只会在我们的关卡中放置静态点光源。我们稍后会介绍固定和可移动的灯光。说到这里,在关卡中放置一个点光源。将“强度”设置为20000,“衰减半径”设置为5000。还要将移动性设置为“静态”。创建多个点光源的副本并放置它们,记住应该为玩家提供足够的照明。您还应该切换到照明视图模式,以便您可以确定房间中是否有足够的照明。最后,构建关卡。您可以设置照明构建的质量。但请记住,您想要的光照质量越高,构建所需的时间就越长,但是在这些更高的设置下,照明将更接近反映生产质量。

照亮环境

现在您可以看到所有的材质和纹理都被正确渲染了。

总结

在本章中,我们讨论了项目,它们是什么,UE4 提供了哪些类型的项目,以及如何创建和加载项目。接下来,我们介绍了 BSP 刷子是什么,BSP 刷子的默认类型以及我们如何编辑它们以创建自己的几何图形。我们回顾了内容浏览器,如何导入和迁移资产,以及如何从内容浏览器将 actor 放置到关卡中。我们介绍了材质的概念,材质编辑器,其用户界面以及如何创建材质。最后,我们通过讨论照明,不同类型的灯光以及一些重要设置来结束了本章。

利用这些知识,我们创建了我们的环境,从而迈出了构建游戏的第一步。在下一章中,我们将讨论体积的概念,它们是什么,不同类型的体积以及我们如何在游戏中应用它们。因此,让我们毫不犹豫地继续下一章。

第四章:使用演员、类和体积

我们已经设置好了环境,所有必要的演员和物体都已经放置好了。还有其他同样重要,甚至更重要的对象(或演员),没有它们游戏就不完整。这些是具有特殊属性的视觉和基本类和体积的演员。有些对游戏至关重要,而有些则添加了特殊功能。在本章中,我们将看一些这些体积和类以及它们如何影响游戏。我们将涵盖以下主题:

  • 基本类

  • 视觉效果

  • 体积

  • 所有类

基本类

我们将从基本类的介绍开始。这些可以在“模式”面板的“基本”部分中找到。

基本类

这包含了几乎所有游戏都必不可少的最基本的类。让我们来看看它们:

  • 空演员:演员是放置在游戏世界中的任何对象。所有的物体、灯光、摄像机、体积等都是演员。空演员是一个空的实体,你可以放置在你的关卡中。它没有任何固有属性。

  • 空角色:一个空角色没有网格或任何动画,只有一个碰撞胶囊。

  • 空幻影:幻影是一个可以被玩家或 AI 控制的演员。游戏中的角色、所有的敌人、盟友和 NPC 都是幻影。

  • 玩家起始:顾名思义,玩家起始是玩游戏时玩家生成的地方。如果关卡中没有玩家起始演员,玩家将生成在世界的原点(0,0,0)处。

  • 点光源:如前一章所述,点光源是最基本和最广泛使用的光源。你也可以从这里添加点光源演员。

  • 立方体:这会在游戏中添加一个立方体原语(静态网格)。

  • 球体:这会在游戏中添加一个球体原语。

  • 圆柱体:这会在游戏中添加一个圆柱体原语。

  • 圆锥体:这会在游戏中添加一个圆锥体原语。

  • 盒触发器/球体触发器:下面的两个演员被合并在一起,因为它们具有相同的作用;唯一的区别是它们的形状。触发器简单来说就是为游戏添加交互性。你可以为触发器添加一个事件(例如,如果玩家触碰它,按下特定键等),当满足条件时,执行开发人员设置的特定动作。例如,你可以有一个触发器,当玩家触碰时,打开一个灯光等。UE4 提供了两种默认形状:盒和球体。你也可以创建自定义形状的触发器,但稍后再说。

将基本类演员添加到游戏中

现在你已经熟悉了基本类,让我们继续在我们的关卡中添加一些。

放置玩家起始演员

我们要放置的第一件事是玩家起始演员。它的位置至关重要,应该事先决定好。在我们的游戏中,我们希望玩家从第一个房间开始。记住这一点,将玩家起始演员拖放到第一个房间,远离门口。

放置玩家起始演员

演员由旁边有旗帜的游戏手柄表示。你可以看到它周围有一个胶囊形状的体积。这个胶囊是为了让你了解角色的大小以及游戏开始时的放置位置。所以确保胶囊不要与任何其他演员或表面重叠,否则会将图标更改为标有“尺寸不好”的标志。你可以使用“缩放”工具调整这个胶囊的大小,使其与角色匹配。

放置玩家起始演员

您可能还注意到了一个蓝色箭头和图标。箭头指向的方向是游戏开始时角色面对的方向(记住,W是平移工具,E是旋转工具,R是缩放工具)。您可以通过旋转操作改变这个方向。如果您点击“播放”按钮,角色将在演员放置的位置生成,并面向箭头指向的方向。

添加触发器

接下来,我们将添加触发器。我们将只使用框触发器来保持简单。要放置框触发器,只需从“模式”面板拖动它并放置在关卡上。我们将在下一章中介绍触发器的用途。现在,您只需将触发器放置在以下部分提到的位置即可。

始终为您的演员命名,无论是触发器、灯光、角色等等。这不仅被认为是良好的做法,而且会使您的项目更易阅读,保持一切井然有序,更易于跟踪。

房间 1

在第一个房间中,将第一个触发器放置在钥匙立方体附近。此触发器将用于与钥匙立方体交互。此触发器(或任何触发器)的放置和尺寸都很重要,因为它们决定了玩家可以与钥匙立方体交互的距离。例如,如果触发器太大,玩家将能够从远处拾取钥匙立方体,这不是我们想要的。我们希望玩家在可以拾取之前相对靠近或相邻于钥匙立方体。

记住这一点,放置触发器并设置尺寸,使其包围整个钥匙立方体(以便玩家可以从任何方向拾取),并使其更高(以便玩家不必直接看着钥匙立方体才能拾取;否则,这会很烦人)。最后,使触发器比钥匙立方体更大。设置完成后,它应该看起来像以下截图:

房间 1

在这个房间中,在基座上添加下一个触发器。这是玩家必须将钥匙立方体放置在此处才能打开门。

再次,拖放一个框触发器,并将其放置在基座上方。与之前为钥匙立方体设置触发器时一样,设置此触发器的尺寸,使玩家可以从任何方向与之交互,而不必站在旁边才能与之交互。

房间 1

要检查触发器的放置位置以及其位置和尺寸是否正确设置,您可以首先取消隐藏触发器演员,方法是取消选中“游戏中隐藏的演员”选项——在触发器的“详细信息”面板中找到,然后播放关卡。现在,就触发器的放置而言,这样就可以了。现在让我们继续进行到第二个房间。

房间 2

在第二个房间中,将第一个触发器放置在房间中央的大门附近。现在,我们希望玩家可以从任何地方打开门。记住这一点,将触发器放置在整个门的长度和宽度范围内。同样,调整宽度时要考虑您希望玩家与门交互时的距离。

房间 2

接下来,在基座上放置下两个触发器,与其他房间中的情况类似。由于基座具有相似的尺寸,您可以通过在上一个房间中复制它们来放置触发器。

房间 2

我们不会像在上一个房间中那样在钥匙立方体上放置任何触发器。这背后的原因将在下一章中解释。

房间 3

在第三个房间中,我们有几个基座,上面将放置按钮。因此,我们需要触发器进行交互。同样,不要在钥匙立方体上放置触发器。

房间 3

房间 4

最后,在第四个房间,与之前的房间一样,在所有基座和门上放置触发器。

房间 4

我们现在已经放置了游戏所需的大部分触发器。我们以后会添加更多。有了这些,我们已经将基本类放置到了我们的关卡中。现在让我们继续进行视觉效果类的操作,看看它如何影响我们的游戏。

视觉效果

由于我们在上一章已经涵盖了光类,我们将跳过它,直接进入视觉效果类。视觉效果类包含影响游戏视觉的角色。虽然不是游戏的必要组成部分,但它们有助于提高游戏的整体质量。

此外,它们不需要太多的内存。

视觉效果

视觉效果类中有各种角色:

  • 后期处理体积: 这是一个可以用来操纵游戏外观和感觉的角色。效果将在玩家在体积中时生效。有许多可用的效果。一些例子包括抗锯齿(去除角色的硬边,使它们更加平滑),泛光(在现实生活中,当看着一个明亮的物体在较暗的背景下时会看到),景深(根据物体与焦点的距离模糊物体),等等。通过使用后期处理体积,你可以为你的游戏添加多种效果;所以尝试使用体积来看看你可以做些什么。

  • 大气雾: 在室外关卡中,仅仅拥有天窗是不足以提供逼真的室外场景的。实际上,来自太阳的光线会因为地球的大气层而散射和传播。为了在游戏中产生这种效果,你需要在关卡中添加大气雾角色。你可以设置属性,比如太阳倍增器(用于增亮雾和天空),默认亮度(用于设置的亮度),默认光颜色(用于设置大气的颜色),等等。

  • 指数高度雾: 你可以使用这个角色在你的关卡中添加雾和薄雾。这也主要用于室外场景。你可以设置属性,比如密度,的颜色,雾高度衰减(随着高度的增加,雾的密度如何减少),等等。

  • 球形反射捕获: 这是另一个有用的工具。球形反射捕获角色获取光照信息并提供逼真的反射效果,使材质具有光泽的效果。金属材料和类似的材料依赖于这个角色来提供逼真的效果。在角色的设置面板中,你会看到一个叫做影响半径的东西,它是角色的影响范围。你可以增加或减少它。在下面是亮度设置,你可以用它来设置你想要的反射亮度。请记住,如果你改变了关卡中的光照(移动它,改变亮度,改变颜色等等)或者移动了角色,球形反射捕获角色不会自动更新。你需要手动更新它,你可以通过位于影响半径选项上方的更新捕获按钮来做到这一点。

  • 盒形反射捕获: 这与球形反射捕获类似。唯一的区别是,球形反射捕获角色具有球形影响区域,而盒形反射捕获角色具有立方体影响区域,使其相对于球形反射捕获角色的效果较弱。这个角色最适合用在走廊或立方体房间中。它的设置与球形反射捕获角色相同,只是它有一个盒过渡距离,可以用来增加或减少它的影响范围。同样,与球形反射捕获角色一样,如果你改变游戏中的光照或物体,你需要点击更新捕获按钮来更新反射。

  • 延迟贴花:延迟贴花角色提供了一种简单且廉价的方式来在物体上添加贴花。这是一个很好的方法,可以添加血迹等效果。您可以选择要用于贴花的材质,并将其放置在关卡上。

将视觉效果角色添加到游戏中-后期处理体积

我们要添加到关卡中的第一件事是后期处理体积。当玩家拾取钥匙方块时,我们希望给他们一个视觉指示,表明他们已经拾取了它。在这种情况下,视觉指示是屏幕上的闪光。要添加角色,只需从面板中拖动它并将其放置在关卡上,覆盖在钥匙方块上。后期处理体积由浅粉色的立方体表示。

将视觉效果角色添加到游戏中-后期处理体积

放置后期处理体积后,让我们在详细信息面板中设置一些属性。在此面板中,您将看到许多选项。所有这些选项都是根据它们创建的效果类型进行分类的。需要注意的一点是,其中一些效果在移动设备上不可用。

我们只会调整全局照明设置。在详细信息面板中,转到全局照明部分,您将看到两个设置:间接光照颜色间接光照强度

将视觉效果角色添加到游戏中-后期处理体积

首先,通过选择它们来启用两种效果。然后,在间接光照颜色选项中,将颜色设置为任何您喜欢的颜色。在我们的情况下,我们将颜色设置为蓝色。您还可以将间接光照强度选项设置为任何您想要的值,但我们只会将其设置为1

设置完成后,如果您走进体积,您会发现一切都变成了蓝色。这将是我们拾取方块时的效果:

将视觉效果角色添加到游戏中-后期处理体积

现在,如果您测试游戏并走进立方体,一切都会变成蓝色,并且除非您走出体积,否则会保持蓝色。我们不希望那样。我们只希望屏幕在玩家拾取钥匙方块时短暂变蓝,然后消失。我们需要更改另一个设置。我们希望在游戏开始时禁用体积,并且只在玩家拾取钥匙方块时触发。我们将在下一章中介绍如何启用此设置。现在,转到详细信息面板,在后期处理体积部分,您会发现已启用选项已选中。只需取消选中;这将禁用后期处理体积。如果您现在选中它,您会发现屏幕不再变蓝。最后,在关卡中复制并放置后期处理体积覆盖在所有钥匙方块上。

体积

体积是具有特殊属性的角色。它们可以被视为不可见的触发器,每个触发器在玩家进入时执行不同的操作(取决于体积类型)。有各种类型的体积角色可用;每个进入时都具有不同的属性。体积只在编辑器模式中可见,而在实际游戏中不可见。因此,它们通常会与另一个角色一起出现。例如,名为造成疼痛的体积的体积,顾名思义,当玩家进入其中时会造成伤害。显然,开发人员会在玩家走过危险区域时使用此体积,例如火灾、电击等。因此,体积将被放置在周围。火灾将作为视觉提示,表明该区域不安全,而造成疼痛的体积将处理其余部分(对玩家造成伤害)。

用户可以使用不同类型的体积。让我们来看看它们。

体积

  • 音频体积:音频体积允许您通过调整其设置来控制游戏中的音频。

  • 阻挡体积阻挡体积充当一个看不见的墙,阻止某些类型的角色通过。您可以在详细信息面板中设置哪些类型的角色可以通过,哪些类型的角色不能通过。

  • 相机阻挡体积:这可以防止相机角色穿过它。

  • 剔除距离体积:这是一个优化工具,根据物体距离摄像机的距离不渲染小于或等于开发人员设置的值的物体。这是一个重要的工具,特别是如果您有一个广阔的室外场景,因为它不会渲染远处的物体,从而节省内存。

  • 杀死体积:这会摧毁进入其中的任何角色,包括玩家。这可以在玩家从悬崖边掉下,掉入坑等情况下使用。

  • 级别流式传输体积:这是另一个优化工具,您可以使用它来设置玩家可见的级别部分。当您有巨大的级别时,这非常有用。您可以使用此体积隐藏玩家当前位置看不到的级别部分或远离他/她的部分。

  • Lightmass 角色间接细节体积:它获取光照信息并在体积内生成间接光照图。

  • Lightmass 重要性体积:另一个优化工具,Lightmass 重要性体积用于在其中生成光照信息(间接光照,阴影等)。建议在游戏级别周围放置 Lightmass 重要性体积以加快光照构建速度。

  • 导航网格边界体积和导航修改器体积:导航网格边界体积用于 AI 在级别中移动。放置后,AI 角色将在体积内的任何地方移动(前提是该区域首先是可访问的)。

导航修改器体积用于修改导航网格边界体积。您可以设置它,以便在导航网格体积内的某个区域被封锁,AI 角色将无法穿过它。

  • 疼痛体积:这会对进入其中的任何玩家造成伤害。

  • 物理体积:这是可以改变物理对象的某些物理属性的体积。例如,您可以启用/禁用称为水体积的设置:当启用时,模拟角色穿过水域,如沼泽。

  • 后期处理体积:这与视觉效果部分中找到的体积相同。

  • 预计算可见性覆盖体积:使用此体积,您可以手动覆盖游戏中角色的可见性。

  • 预计算可见性体积:此体积与预计算可见性覆盖体积具有相似的功能,唯一的区别是此体积自动存储游戏中角色的可见性。

  • 触发体积:这与之前讨论过的触发角色相同。一个区别是,触发角色以预定义的形状出现,而您可以使用编辑几何模式更改触发体积的形状。

关于体积,您还应该知道,就像 BSP 刷子一样,您可以编辑它们的形状以创建自己的自定义形状的体积。编辑的方式与 BSP 刷子的方式相同。在模式面板中,单击编辑几何模式将切换到编辑模式。完成后,您可以单击要更改并进行所需更改的任何体积。

向游戏添加体积

现在我们知道了体积是什么以及可用的体积类型,让我们继续向我们的级别添加一些体积。

Lightmass 重要性体积

建议使用 Lightmass 重要性体积,因为它可以减少渲染时间(光照构建时间)。我们将设置其尺寸,使其包围游戏中的四个房间。只需从模式面板拖动角色并将其放在屏幕上。

Lightmass 重要性体积

Lightmass Importance Volume 由一个黄色的立方体表示。设置其尺寸,使其包含游戏中的所有四个房间。

Lightmass Importance Volume

如果现在构建照明,您会注意到建筑过程所需的时间相对较短,房间外的区域现在完全黑暗。引擎现在主要关注体积内的内容,以产生高质量的照明,而体积外的任何内容在照明方面将质量较低。

接下来,添加Nav Mesh Bounds Volume。如果您希望在游戏中有一个 AI 角色,Nav Mesh Bounds Volume是一个重要的组件。如前所述,该体积基本上是 AI 角色在其中移动和与世界互动的范围。在设计游戏时,您应该知道所有由 AI 控制的角色将在游戏中移动的位置以及他们可以与之交互的对象,然后相应地放置您的体积。

抓住Nav Mesh Bounds Volume并将其拖入屏幕。我们需要在房间 3 和房间 4 中使用这个体积。该体积由一个灰色的立方体表示。

房间 3

在坑上方和附近放置Nav Mesh Bounds Volume,与开关的基座相对。

在放置这个体积时,建议在显示菜单中打开导航。在视口工具栏中,点击显示并勾选导航选项,以在视口中显示它。一旦切换,您会看到体积内的任何表面、角色或任何其他物理对象(或它们的部分)都会在其上呈现出明亮的绿色。这是 AI 活动的视觉指示器。它将忽略体积外的任何东西:

房间 3

如前所述,体积重叠的表面或对象的任何部分都将是绿色的。让我们继续进行到房间 4。

房间 4

在房间 4 中,我们需要一个大的 Nav Mesh Bounds Volume,几乎覆盖整个房间。放置体积并使用几何编辑模式移动其边缘。设置尺寸后,它应该看起来像以下的截图:

房间 4

我们的 AI 角色现在将知道在关卡中移动的位置(绿色高亮显示的区域)。

所有类别

最后,我们有所有类别部分,其中列出了到目前为止我们讨论过的所有类别和体积。此外,还有一些角色未显示在前三个部分中,只能通过所有类别部分访问。

所有类别

有许多这样的角色,其中一些超出了本指南的范围。我们只会谈论一些在所有类别部分中的角色:

  • 环境声音角色:这是一个您可以用来在游戏中播放音频或音效的角色。它还模拟真实世界的声音,即您离源头越近,声音就会越大,反之亦然,您离源头越远,声音就会越微弱。

  • 摄像机摄像机角色是您通过它看到虚拟世界的角色。默认情况下,您的角色类已经有一个摄像机,但如果您想导入自己的角色,摄像机角色是一个必不可少的组件。它还用于过场动画等。

  • 默认角色默认角色角色是一个简单的球形角色,具有内置的飞行机制、静态网格、球形碰撞等,您可以用于简单的 AI。

  • 地形:在这里可以找到切换到地形模式的另一种方法。如果您从这里拖动地形角色并将其放在屏幕上,模式将切换到地形模式,在那里您可以放置您的地形。

  • 关卡边界关卡边界演员在关卡中放置时会自动更新和调整大小以囊括整个世界。它可以用于计算关卡和世界的大小。只需记住,如果您的关卡有天空盒或天空圆顶,该体积也会调整大小并包括其中。

  • Matinee 演员:Matinee 是用于创建电影、布景等的强大工具。添加 Matinee 演员有两种方法。第一种方法是通过视口工具栏。只需单击Matinee,然后在菜单打开时选择添加 Matinee。另一种方法是使用此选项。您可以从模式面板拖动演员并将其放置在关卡上。

  • 导航链接代理导航链接代理演员用于如果 AI 角色必须执行动作,例如从悬崖上跳下或跳跃,跳跃之间的间隙等。它允许 AI 角色暂时离开导航网格。(我们将在下一章回到这一点,当我们谈论 AI 时。)

  • 目标点目标点演员用于获取关卡中特定点的坐标。它们也可以用于 AI 角色。如果您希望 AI 角色沿着特定路径移动,或者让它巡逻特定区域,您应该使用目标点。此外,请记住,目标点应放置在 Nav Mesh Bounds Volume 内,否则 AI 角色将忽略它们,即使您已经编写脚本让其朝着所说的目标点移动。如果您希望角色传送到特定目的地,也可以使用目标点。

  • 文本渲染:文本渲染演员,顾名思义,用于在游戏中渲染文本。如果您希望游戏中有弹出文本(用于教程或类似内容),这就是您应该使用的。您可以导入自己的字体并创建自己的文本渲染。

  • 类蓝图:虽然不是单个特定的演员,但您在项目中创建的所有类蓝图都显示在这里。类蓝图究竟是什么将在下一章中讨论。目前,您需要知道和记住的唯一一件事是,您创建的所有类也可以从这里访问。

从所有类中添加演员

现在我们已经讨论了在所有类中找到的一些演员,让我们继续向游戏中添加其中一些。

摄像机

我们要添加的第一件事是摄像机演员。作为教程的一部分,我们将制作一个小的过场动画,在其中当玩家将钥匙立方体放在基座上时,我们将展示门的打开(以便玩家了解钥匙立方体的用途和作用)。

因此,从所有类面板中拖动CameraActor并将其放置在关卡上。完成后,设置它以面向门。以下截图是您可以放置摄像机的示例位置:

摄像机

屏幕右下角的小窗口显示了从第二摄像机的视图,您可以使用它来正确调整其位置,直到您可以清楚地看到门。每当您选择任何CameraActor时,该窗口都会打开,显示您从所选CameraActor的视图。我们将在后续章节中创建过场动画时需要这个。

Matinee 演员

我们还将放置几个 Matinee 演员。我们不打算通过脚本(或在这种情况下,蓝图)移动我们的门和平台,而是打算借助 Matinee 实现这些功能。我们将在虚幻 Matinee中制作门的打开和动画的绘制,并在玩家与适当的触发器交互时调用它。

要添加 Matinee 演员,请从模式面板中拖动它并将其放置在门附近。

注意

虽然放置 Matinee 演员的位置并不重要,为了避免混淆并使事情更加方便,您应该将其放置在您希望使用 Matinee 移动或编辑的演员附近。

Matinee 演员

只需像这样放置动画演员来控制所有的门。我们还需要放置更多的动画演员,但我们稍后会这样做。

目标点

接下来,我们将放置一对目标点演员。如前所述,目标点对于移动 AI 角色非常有用。我们将有一个非常简单的 AI,它沿着指定的路径移动,在触发开关时停止,并且如果掉入坑中则重新出现。

房间 3

在房间 3 中,放置两个目标点:一个是 AI 角色最初的位置,另一个是开关的位置。当 AI 角色掉入坑中时,它将重新出现在第一个目标点。当玩家激活它时,AI 角色将前往第二个目标点。

房间 3

这些演员由一个小的目标图标表示。现在让我们把它们放在房间 4 中。

房间 4

在房间 4 中,我们将放置一对目标点演员,因为 AI 角色将采取更多的非线性路径。

房间 4

前面的截图是房间 4 的俯视图。玩家将从左侧开始,并且必须引导 AI 角色朝右侧移动。此外,正如你所看到的,我们已经放置了七个目标点演员。AI 角色将走的路径由红线表示。完成这些后,我们已经完全放置了我们的目标点演员。通过这样做,我们已经在我们的关卡中放置了所有的类、体积和其他演员。

总结

在本章中,我们看了一些在模式面板中出现的对游戏功能至关重要的演员,以及一些增强整体体验的演员。

除了讨论它们,我们还在我们的关卡中放置了一些。我们现在离制作游戏很近了。在下一章中,我们将讨论蓝图——可能是我们指南中最重要的主题。没有它们,游戏中就没有互动性。所以,让我们在下一章开始编写脚本。

第五章:使用蓝图编写脚本

现在我们来到游戏中最重要的一个方面:互动性。没有它,我们的游戏只是玩家可以在其中移动的环境。以前使用过 UDK 的人可能已经熟悉视觉脚本的概念。UDK 有一个称为 Kismet 的强大的视觉脚本工具。这个工具的一个非常吸引人的特点是任何人都可以在没有任何编程知识的情况下使用它。您只需要知道您希望实现的事件背后的逻辑。您甚至可以在不写一行代码的情况下创建一个完整的游戏。

在虚幻 4 中,我们有蓝图,这在某种程度上是对 Kismet 的升级。基本设置是相同的:您有各种节点和表达式,可以用来编写游戏事件、动作等。界面简单易懂,易于使用,但功能强大。一旦掌握了它,您就可以创建复杂的序列和事件。

然而,尽管蓝图是一种易学易用的工具,但在功能上仍然存在一定的局限性。在这方面,C++比蓝图更加灵活和多功能。C++非常适合实现复杂的交互和机制,而蓝图可能提供或可能不提供。蓝图和 C++之间的另一个区别是,蓝图执行速度比 C++代码慢得多,但只有在游戏中有大量蓝图脚本时才会注意到这一点。蓝图和 C++之间还有其他几个区别;但最终都取决于您对游戏中所需功能、机制和功能的个人偏好。您可以选择使用其中一个或两者兼而有之。

在本章中,我们将涵盖以下主题:

  • 蓝图是什么以及它们的工作原理

  • 什么是级别蓝图以及如何使用级别蓝图进行脚本编写

  • 级别蓝图用户界面

  • 蓝图类是什么以及如何在游戏中使用它

  • 如何编写基本 AI

蓝图的工作原理

蓝图中的脚本与创建流程图类似。您可以连接各种节点以创建动作序列。为了正确地在蓝图中编写脚本,您应该首先了解所需序列背后的逻辑。例如,假设您想要实现一个灯,当您靠近它时打开,当您远离它时关闭。在这种情况下,您首先会在灯周围放置一个触发器。然后,这背后的逻辑将是:

  1. 如果玩家与触发器重叠,灯将被打开。

  2. 如果玩家没有与触发器重叠,灯将被关闭。

现在我们已经找到了如何执行此操作,我们可以继续设置我们的节点。假设您的设置看起来像这样:

蓝图的工作原理

当角色走进箱形触发器时,天花板灯(聚光灯)将被打开。切换灯的蓝图将看起来像这样:

蓝图的工作原理

有各种类型的节点,您应该了解:

  • 事件节点:红色条的节点是事件节点。这些在相应事件发生时被激活。它们通常在左上角有一个向右的箭头。

您还有输入事件节点,当玩家按下相应的输入时触发(例如,当玩家按下鼠标左键时开火)。

  • 功能节点:蓝色顶部的节点是功能节点。通常在左上角有一个函数符号f,就像你在前面的截图中看到的那样。这些节点对演员或玩家执行特定操作。

有两种类型的功能节点:那些对演员产生影响的节点,以及返回特定值的节点。这些类型的节点具有绿色顶部(未在截图中显示)。这包括返回世界中演员的位置,返回演员的速度等。

  • 引用或变量节点:屏幕截图中心的节点是一个变量节点(或引用)。当您希望函数节点作用于场景中的特定角色,或者如果您想要“获取”其某些属性,您需要在级别蓝图中创建其引用。变量节点也是如此。毫无疑问,变量在脚本或编码时起着非常重要的作用。因此,当您使用蓝图时,自然会创建变量。

在使用蓝图进行脚本编写时,请记住节点越少,性能越好。这也使您的工作区更有组织且更易于阅读。

当特定事件发生时,相应的事件节点会触发脉冲到其连接的任何节点。在我们的情况下,当玩家重叠触发器时,它将激活聚光灯的切换可见性功能(因为灯默认是关闭的,它将切换为开启)。当玩家停止重叠触发器(走出触发器)时,它将再次触发切换可见性功能(灯将关闭)。

蓝图的工作原理

前面的屏幕截图演示了事件发生时蓝图的功能。当玩家重叠触发器(左上角)时,相应的事件会触发脉冲到切换可见性功能,切换灯光开启。当玩家移出触发器或停止重叠时,相应的事件再次触发脉冲到切换可见性功能节点,切换灯光开启。

您实际上可以看到每当节点被激活时脉冲被触发。这使得调试非常容易,因为您可以看到哪个节点导致了问题,并相应地进行修复。

除了了解逻辑,您还应该知道哪些节点可用以及它们可以用来做什么。这需要时间和实践。

虚幻 4 中有两种蓝图:级别蓝图和蓝图类。

级别蓝图对于 UE4 来说就像 Kismet 对于 UE3 一样。您在项目文件中创建的每个级别或地图都将有其自己独特的级别蓝图。您可以使用级别蓝图控制与级别相关的一切,例如播放过场动画,在您的级别中编辑角色的属性(可见性、位置等)等等。

另一方面,蓝图类是包含各种组件和脚本的特殊角色。这些组件包括静态或骨骼网格、摄像机、碰撞组件、触发器和音频组件等。通过脚本,您可以设置它们的属性并确定它们如何与世界交互。蓝图类不是特定于特定级别的;因此,您可以在您项目中制作的任何地图或级别中使用它们。您还可以将它们导出到其他项目中。

让我们继续讲解级别蓝图的用户界面。

级别蓝图用户界面

以下屏幕截图显示了级别蓝图的用户界面。继续我们将界面分成各个部分的风格,界面被分成了几个部分,我们将逐个介绍。

级别蓝图用户界面

选项卡和菜单栏

选项卡栏与所有其他窗口中看到的相同。就像在 Web 浏览器中一样,您可以看到哪些窗口是打开的,在它们之间切换,并从那里关闭任何窗口。

选项卡和菜单栏

菜单栏是您可以访问所有通用命令和操作的地方。

  • 文件:在此菜单中,您可以保存您的级别,打开内容浏览器中的任何资产,编译蓝图,启用源代码控制等等。

  • 编辑:从此菜单中,您可以执行撤消上一个操作、重做操作、搜索特定节点或表达式等操作。

  • 视图:在这里,您可以隐藏/显示未使用的引脚和未连接的引脚(通过它们连接节点),在事件图中放大和缩小。

  • 调试:如果您的蓝图序列中有问题,您无法解决,您可以使用调试菜单中提供的选项来查找和解决问题。这包括添加断点、观察特定变量在特定点的值等。

  • 窗口:在这里,您可以设置要显示的窗口和不想显示的窗口。您可以从窗口菜单中自定义布局并保存它。

  • 帮助:从这里,您可以访问 Epic 官方关于蓝图的文档。您还可以从这里访问 Wiki 页面、论坛和答案中心。

工具栏

工具栏包含最常用的操作:

工具栏

最常用的操作解释如下:

  • 编译:每当您在事件图中添加、删除或编辑任何节点时,请务必点击编译按钮。它会编译所有节点和序列,如果有任何错误或警告,它会在编译器结果面板中通知您,然后您可以进行修复。此外,如果您有一个变量节点,为了设置其默认值,您首先需要编译。

  • 搜索:当您有大型和复杂的序列,有几个连接的节点时,尝试找到特定节点或变量可能是一项繁琐和耗时的任务。为了避免这种情况,您可以点击搜索按钮,然后输入您想要查找的内容的名称。结果将默认显示在屏幕底部,编译器结果面板所在的位置(它将打开一个名为查找结果的新选项卡)。

  • 类设置:点击这个按钮将在详细信息面板中打开蓝图设置,您可以在那里设置某些选项,比如添加描述、类别等。

  • 类默认:在这里,您可以设置蓝图类的默认或初始值。

  • 播放:类似于视口工具栏中的播放按钮,这将打开一个新窗口,您可以在其中测试您的游戏。游戏运行时,点击Esc按钮将关闭游戏并返回到编辑器。您可能会注意到按钮旁边有一个小向下的箭头。这将打开一个菜单,您可以在其中设置选项,比如您想要预览游戏的方式,玩家应该从哪里开始等等。

详细信息面板

详细信息面板中,您可以设置各种节点和变量的属性。它提供设置,比如您想要的变量类型(布尔值、浮点数、整数等)、变量名称等。

详细信息面板

编译器结果面板

任何具有编程知识的人都会知道什么是编译。当您编写的代码从您编写代码的语言转换为计算机理解的机器语言时,就会发生编译,以便可以执行。这通常由编译器处理。(如果您在级别蓝图中看不到编译器结果面板,请转到窗口,然后点击编译器结果。)

编译器结果面板

编译器结果面板中,您可以看到编译器的输出日志。编译花费了多长时间,编译期间发现的任何错误,任何警告等都会显示在这里。

我的蓝图面板

在这个面板中,您可以看到您创建的所有事件、变量和事件分发器的列表。每当您创建一个事件节点,它都会显示在事件图下面。除此之外,您还可以创建各种函数、宏、变量等。要这样做,您可以点击添加新按钮,然后选择您想要创建的内容,或者点击名称前面的+按钮。

我的蓝图面板

事件图

位于屏幕中央的事件图(也称为图编辑器)是您设置节点和序列的地方。默认情况下,已经设置了两个事件节点,即事件开始播放,在游戏开始时激活,以及事件 Tick,在每一帧激活。这两个事件不需要任何触发器来激活。

事件图

在顶部,您可以看到选项卡。在选项卡下方,左上角有两个箭头。您可以使用它们在图表之间切换。在中心,您可以看到层次结构和蓝图结构。在极右边,您可以看到缩放比例—换句话说,您已经缩放了多少。

下表列出了您应该了解和记忆的事件图的控件:

控制 动作
鼠标左键单击 选择节点
左键单击+拖动 创建选择框
右键单击 打开操作菜单
右键单击+拖动 平移图编辑器
滚轮向上 放大
滚轮向下 缩小
C 在选定的节点周围创建注释框

注意

尽管它是可视化脚本,但使用蓝图进行编写时仍然可能会变得非常混乱。因此,为了避免混淆并保持一切有序,建议在节点周围创建注释框。

在游戏中使用关卡蓝图

现在,我们已经了解了所有基础知识,可以开始编写游戏了。您应该知道的一件事是,随着游戏的进行,我们可能会添加更多的触发器和角色。

钥匙立方体拾取和放置

我们要编写的第一件事是玩家拾取钥匙立方体。现在,当玩家靠近钥匙立方体并在屏幕上点击它时,他们将能够拾取立方体。在我们的情况下,为了让玩家产生拾取钥匙的错觉,当玩家在屏幕上点击时,我们将销毁该角色。此外,我们将在底座顶部放置一个钥匙立方体的复制品,并在游戏开始时将其隐藏起来。当玩家拾取了立方体并且靠近底座时,在屏幕上点击将使立方体从游戏中显示出来,给人一种角色已经将钥匙放在底座上的印象。所以,让我们设置一下。首先,选择钥匙立方体,按住Alt按钮,并借助变换工具,拖出一个副本。将这个副本放在底座顶部。

钥匙立方体拾取和放置

在其详细信息面板中,在渲染部分下,选中游戏中隐藏的角色选项。这样做将在运行时隐藏游戏。

钥匙立方体拾取和放置

现在,让我们打开关卡蓝图。要做到这一点,点击视口工具栏中的蓝图,然后选择打开关卡蓝图

现在,在这种情况下,事件是玩家在屏幕上轻触,或者在技术术语中,提供触摸输入。因此,在事件图窗口中,右键单击打开操作菜单,然后键入Touch。这样应该可以找到并显示Touch事件节点。单击它以将其添加到事件图中。您可能会找到各种类型的Touch节点—您需要的是简单地说Touch的节点。

钥匙立方体拾取和放置

InputTouch事件节点中,我们只关注Pressed输出引脚。当玩家在屏幕上按下时,Pressed引脚将被激活。

为了从场景中移除盒子,我们将使用销毁演员功能节点。因此,在图形编辑器中的任何位置右键单击,键入销毁演员,然后点击结果(你也可以在实用工具部分手动找到它)。有了这两个节点后,将按下输出引脚连接到销毁演员输入引脚。现在,函数不知道它自己要销毁哪个演员。我们必须告诉它我们想要摆脱哪个演员。在蓝图术语中,我们必须创建一个对我们希望应用该函数的演员的引用。因此,在视口中,选择关键立方体。然后,在图形编辑器中,右键单击并选择创建对 TemplateCube_Rounded 的引用

如果你的对象有不同的名称,而不是TemplateCube_Rounded,你会看到演员的名称。

关键立方体的拾取和放置

这样做将创建一个带有演员名称的参考节点。将其连接到销毁演员目标引脚。

另一种方法是拖动参考节点的输出引脚,并将其释放到事件图中的任何位置。这样将打开一个菜单,你可以从中选择销毁演员节点。一旦创建,参考节点将自动连接到它。到目前为止,设置应该是这样的:

关键立方体的拾取和放置

然而,这里有一个问题。如果你测试你的游戏,你会注意到无论你在屏幕上点击哪里,立方体都会被销毁。我们只希望当玩家足够靠近时才销毁立方体。

为了解决这个问题,我们要做的第一件事是在游戏开始时禁用输入。你可能还记得,当游戏开始时激活的事件节点事件开始播放已经存在于图形编辑器中。我们要在这个事件上附加一个禁用输入节点。右键单击并找到该节点,并将其连接到事件开始播放

关键立方体的拾取和放置

注意

虽然现在不是必需的,但如果你的游戏有多个玩家或控制器,你将不得不指定要禁用哪个玩家的控制器。首先创建一个获取玩家控制器节点,并将其附加到禁用输入节点中的玩家控制器。默认情况下,你所扮演的角色的玩家索引为 0。

如果你现在测试你的游戏,当你点击屏幕时,关键立方体不会被销毁(尽管角色会再次开始发射抛射物)。现在,回到我们的顺序,因为我们希望玩家只能在与我们放置在关键立方体周围的触发器重叠时才能拾取立方体,所以我们将在他们与触发器重叠时启用他们的输入。

选择触发器后,创建一个事件开始重叠节点。创建后,创建一个启用输入节点,并将其连接到事件开始重叠节点的输出引脚。

关键立方体的拾取和放置

我们现在几乎完成了设置。如果你现在测试它,你会发现它的功能方式与我们打算的一样。然而,这还不完整。首先,如果你的房间里有多个关键立方体,当你点击其中一个时,它们都会消失。我们不希望这样;我们只希望玩家拾取的关键立方体消失。为此,我们将使用一个Gate节点。Gate节点用于根据你可以设置的某些条件来控制通过节点的脉冲。例如,你可以设置它在发生某个事件时打开,等等。例如,当玩家与触发器重叠时,它将打开门,允许脉冲通过它。

事件图中的任何位置右键单击,然后键入Gate。然后,点击放置它。你也可以在实用工具 | 流程控制 | Gate下找到它。

关键立方体的拾取和放置

您希望控制的事件与Gate节点的Enter输入相连。其余的事件用于控制流程。将Close输入连接到事件将会阻止任何东西通过Gate当事件发生时。同样,将Open输入连接到事件或功能将允许脉冲通过节点。Toggle节点将打开Gate节点(如果最初关闭)或反之亦然。最后,您有一个Start Closed引脚,它设置了Gate节点的初始状态。如果选中,它最初将关闭,取消选中则最初将打开。

首先,断开Pressed引脚与InputTouch节点的连接,而是将其连接到 Gate 节点的Enter引脚。然后,将Exit引脚连接到Destroy Actor函数的输入引脚。完成后,我们需要一个事件来打开 Gate 节点。这个事件是玩家与触发器重叠时。因此,将Enable Input节点的输出引脚连接到 Gate 节点的Open输入引脚(确保Start Closed已选中)。您的设置应该如下所示:

关键方块拾取和放置

现在,当玩家走出触发器,也就是停止与触发器重叠时,我们再次希望禁用输入。因此,选择触发框,创建一个OnActorEndOverlap节点。您可以在搜索栏中输入或在<actor 名称> | Collision | Add On Actor End Overlap下找到它。还要创建一个Disable Input节点。同样,您可以输入或在Input | Disable Input下找到它。设置好一切后,我们应该得到以下结果:

关键方块拾取和放置

现在我们有了一个简单的拾取动作。但在完成之前,我们还有更多工作要做。我们只是编写了拾取方块的脚本。我们还需要为玩家放置关键方块编写脚本。这很简单。

我们需要做的第一件事是添加一个重叠事件,以启用玩家的输入。将它们与之前的触发器连接方式相同。接下来,我们将添加另一个触摸事件节点。我们将连接一个Set Actor Hidden in Game节点。首先,选择另一个关键方块(在游戏中隐藏的那个),然后在Graph Editor中的任意位置右键单击,并通过搜索栏找到它。您还可以在<所选角色名称> | Rendering | Set Actor Hidden in Game中找到它。当您创建此节点时,将自动创建一个关键方块的引用节点,并连接到Target输入。接下来,将Pressed输出引脚连接到Set Actor Hidden in Game节点的输入引脚。完成后,添加一个Gate节点,将其Toggle输入连接到Enable Output节点的输出。

最后,创建一个OnActorEndOverlap节点,并像之前的触发器一样连接一个Disable Input节点。

关键方块拾取和放置

如果您进行测试,您会发现它完美地运行。但是,这里有一个问题:我们没有设置玩家何时可以放置或显示底座上的关键方块的条件。换句话说,如果玩家只是走到底座旁,而没有拾取第一个关键方块,他们仍然可以显示其他关键方块,因为这意味着玩家可以在不拾取关键方块的情况下通过房间。

为了解决这个问题,我们首先要改变基座上触发器的一些属性。我们需要首先关闭触发器的碰撞。我们将设置它,使得最初,基座上的触发器忽略所有类型的重叠事件,换句话说,将其关闭。要这样做,选择基座上的触发器,在详细面板中,转到碰撞部分。在这个部分下,你会看到一个名为碰撞预设的选项。默认情况下,它将被设置为触发器。点击条以打开预设菜单。从这里,选择自定义

关键立方体拾取和放置

接下来,点击碰撞预设旁边的小三角,以打开触发器对不同类型角色的碰撞响应列表。有三种一般的响应:

  • 忽略:触发器不会对碰撞做出任何响应。触发器设置为忽略的角色既不会被阻挡,也不会被它注册。

  • 重叠:触发器设置为重叠的角色不会被它阻挡,但碰撞会被它注册。这种碰撞注册是我们能够编写脚本的方式,比如当玩家重叠触发器时开灯。

  • 阻挡:触发器设置为阻挡的角色将无法通过它。它会像一堵墙一样。

你可以为每个角色单独设置所需的响应,也可以选择所有角色所需的一般响应。我们将选择后者。在最顶部,有一个名为碰撞响应的选项。在它前面,有三个框,分别对应每种响应类型。简单地勾选忽略框,下面的所有内容都将被设置为忽略。这就是我们想要的。我们希望触发器最初忽略所有角色的碰撞。当玩家拾取了关键立方体后,我们将改变它的碰撞响应。

回到我们之前设置的拾取,我们需要向其中添加一些节点。在事件图中的任意位置右键单击,在流程控制部分,你会找到一个叫做序列的东西。选择并创建它。序列节点有一个输入和多个输出。如果你想要一个特定的节点来触发或设置各种不同的事件或功能,你应该使用序列节点。

关键立方体拾取和放置

默认情况下,序列节点有一个输入引脚和两个输出引脚。第一个节点首先触发,然后是下一个,依此类推。如果你想要更多的输出引脚,只需点击添加引脚,它将创建另一个输出引脚。现在,将节点的输出引脚连接到序列节点的输入引脚。然后,将然后 0连接到销毁角色节点。

关键立方体拾取和放置

当玩家拾取了立方体后,我们将现在将触发器的碰撞响应改为重叠。选择触发器,右键单击它,首先取消选中上下文敏感框,它位于菜单右上角。当你在视口中选择一个角色并在图形编辑器中右键单击时,你可以看到的事件节点和函数节点通常与所选角色相关。它们只显示可以直接应用于角色的函数和表达式。否则,蓝图提供了相当多的节点,但其中一些不能直接或根本不能用于所选角色。

我们需要的节点是一个可以应用于触发器的节点,但不是直接的。我们需要的是一个设置所有通道的碰撞响应节点。这个节点可以用于在运行时改变角色的碰撞响应。在事件图中右键单击,输入节点的名称并创建它。

关键立方体拾取和放置

在这里,您可以设置希望更改其碰撞响应的目标角色。如果单击下拉菜单,您将看到三种设置:忽略重叠阻挡。如果您回忆一下,这些是触发器碰撞部分中的三种响应类型。我们将其设置为忽略,但是我们希望在玩家拾起钥匙立方体后将其更改为重叠。因此,在下拉菜单中选择重叠。接下来,将然后 1引脚连接到此节点的输入。最后,选择视口中的触发器,在图形编辑器中右键单击,勾选上下文敏感框,并为选择创建引用。将其连接到设置所有通道的碰撞响应节点的目标输入。当您这样做时,您会发现它并不直接连接到目标输入。相反,会创建一个新节点,该节点以触发器的引用作为其输入,并将碰撞组件作为其输出。这样做的作用是将触发器框转换为称为基本组件引用的东西。这是您可以将其连接到此节点的唯一方法。

钥匙立方体拾取和放置

如果我们现在测试游戏,我们会发现事情正在按照我们想要的方式运行。我们将无法在没有先拾起它的情况下放置钥匙立方体。

我们在这里的设置几乎完成了。记得我们在钥匙立方体周围放置了一个后期处理体,它将作为玩家拾起钥匙立方体的视觉指示器?我们也需要对其进行脚本编写。我们最初将其设置为禁用状态。我们将通过蓝图启用它,然后在非常短的时间后销毁它。首先,向序列节点添加一个新的引脚。接下来,选择后期处理体,在图形编辑器中右键单击并为其创建一个引用。然后,单击其输出引脚,拖动它并释放左鼠标按钮以打开菜单。在这里,您可以输入设置启用,这将创建一个布尔节点(布尔节点为红色)。创建后,您将看到一个复选框,上面写着启用。选中该框,并将其连接到序列节点的然后 2输出引脚。

接下来,我们需要在短暂的时间后销毁角色。为此,我们需要创建一个延迟节点。延迟节点接收输入,并在一定时间后触发脉冲(您可以设置)。在图形编辑器中右键单击,输入延迟并创建它。您还可以在实用工具 | 流程控制 | 延迟下找到它。节点中有一个名为持续时间的选项。在这里,您可以设置在触发脉冲之前要等待多长时间。现在,将其保留在默认值(即0.2秒),并将其连接到设置启用节点。最后,创建一个销毁角色节点,将其连接到延迟节点,并将后期处理体设置为其目标。您可以通过单击Ctrl + C选择设置启用节点的后期处理引用,然后Ctrl + V)创建一个副本并将此副本连接到销毁角色节点的目标输入。

钥匙立方体拾取和放置

就是这样!我们为我们的钥匙立方体设置了拾取和放置系统。我们还有一个视觉指示器,表明我们已经拾起了立方体(我们将在下一章中介绍如何编写门的开关)。尽管这是一个相当简单和小的设置,但为每个钥匙立方体都这样做将是一项繁琐的工作。想象一下,如果您的游戏有 10…20…50…100 个房间!您将不得不为游戏中的每个钥匙立方体编写脚本,并浪费大量时间。幸运的是,UE4 提供了一些方法来解决这种情况:蓝图类。

蓝图类

如前所述,为每个关键立方体编写脚本将是一项乏味且耗时的任务。使用蓝图类,您只需要进行一次所有脚本编写和其他操作。蓝图类是一个包含在其中进行脚本编写的演员(静态网格、体积、摄像机类、触发盒等)的实体。再次看看我们的例子,比如灯的开关,假设您想放置 10 盏这样的灯。使用蓝图类,您只需创建并编写一次,保存并复制。这真是 UE4 提供的一个令人惊叹的功能。

创建蓝图类

要创建蓝图类,请单击视口工具栏中的蓝图按钮,在下拉菜单中选择新建空蓝图类。然后会打开一个窗口,询问您选择父类,指示您希望创建的蓝图类的类型。

创建蓝图类

在顶部,您将看到最常见的类。它们如下:

  • 演员:如前所述,演员是可以放置在世界中的对象(静态网格、触发器、摄像机、体积等都算作演员)

  • 棋子:棋子是可以由玩家或计算机控制的演员

  • 角色:这类似于棋子,但具有四处走动的能力

  • 玩家控制器:负责在游戏中为棋子角色提供输入或控制

  • 游戏模式:负责游戏规则的所有内容

  • 演员组件:您可以使用这个创建一个组件并将其添加到任何演员

  • 场景组件:您可以创建可以附加到其他场景组件的组件

除此之外,还有其他类可供选择。要查看它们,请单击所有类,这将打开一个菜单,列出您可以创建蓝图的所有类。对于我们的关键立方体,我们需要创建一个演员蓝图类。选择演员,然后会打开另一个窗口,询问您希望将其保存在何处以及如何命名。将其命名为Key_Cube,并将其保存在蓝图文件夹中。满意后,单击确定演员蓝图类窗口将打开。

创建蓝图类

蓝图类用户界面与关卡蓝图类似,但有一些区别。它有一些额外的窗口和面板,如下所述:

  • 组件面板组件面板是您可以查看并向蓝图类添加组件的地方。空蓝图类中的默认组件是DefaultSceneRoot。它无法重命名、复制或删除。但是,一旦您添加了组件,它就会被替换。同样,如果您删除了所有组件,它也会回来。要添加组件,请单击添加组件按钮,这将打开一个菜单,您可以从中选择要添加的组件。或者,您可以从内容浏览器中拖动资产并将其放入图形编辑器组件面板中,它将作为组件添加到蓝图类中。组件包括静态或骨骼网格、光源演员、摄像机、音频演员、触发盒、体积、粒子系统等。当您放置一个组件时,它可以在图形编辑器中看到,您可以在详细信息面板中设置其属性,如大小、位置、移动性、材质(如果是静态网格或骨骼网格)等。

  • 图形编辑器图形编辑器与关卡蓝图类似,但在蓝图类中有一些额外的窗口和编辑器。第一个窗口是视口,与编辑器中的相同。它主要用于放置演员并设置它们的位置、属性等。大多数工具您将在主视口(编辑器的视口)工具栏中找到,这里也都有。

  • 事件图:下一个窗口是事件图窗口,它与级别蓝图窗口相同。在这里,你可以编写在视口中添加的组件及其功能(例如,在玩家靠近时脚灯的开关/关闭)。请记住,你只能编写蓝图类中存在的组件的功能。你不能直接使用它来编写不是类组件的任何演员的功能。

  • 构建脚本:最后,还有构建脚本窗口。这也类似于事件图,你可以设置和连接节点,就像在事件图中一样。不同之处在于这些节点在构建蓝图类时激活。它们在运行时不起作用,因为那时事件图脚本起作用。你可以使用构建脚本来设置属性,创建和添加你希望在构建过程中改变的任何组件的属性,等等。

让我们开始为关键立方体创建蓝图类。

视口

我们需要的第一件事是组件。我们需要三个组件:一个立方体,一个触发盒,和一个后期处理体积。在视口中,点击添加组件按钮,在渲染下选择静态网格。它会向类中添加一个静态网格组件。现在你需要指定要添加到类中的静态网格。选择组件面板中选中的静态网格演员,在演员的详细信息面板中,在静态网格部分,点击按钮,选择TemplateCube_Rounded。一旦设置了网格,它将出现在视口中。选择立方体,将其比例(位于详细信息面板中)从1减少到0.2沿着所有三个轴。

我们需要的下一件事是一个触发盒。点击添加组件按钮,在碰撞部分选择盒碰撞。添加后,将其比例从1增加到9沿着所有三个轴,并将其放置在这样的方式,使其底部与立方体的底部齐平。

视口

构建脚本

你可以通过在详细信息面板中点击覆盖材质按钮,并选择关键立方体材质来设置其材质。然而,我们将使用构建脚本来分配其材质。切换到构建脚本选项卡。你会看到一个名为构建脚本的节点,默认情况下存在。你无法删除此节点;这是脚本开始的地方。然而,在我们可以编写它之前,我们需要创建一个类型为材质的变量。在我的蓝图部分,点击添加新,在下拉菜单中选择变量。将此变量命名为关键立方体材质,并在详细信息面板中将其类型从布尔(默认变量类型)更改为材质。还要确保勾选可编辑框,以便我们可以从蓝图类外部进行编辑。

构建脚本

接下来,从我的蓝图面板中拖动关键立方体材质变量,放入图形编辑器中,并在窗口打开时选择设置。将其连接到构建脚本节点的输出引脚。重复此过程,只是这次选择获取并将其连接到关键立方体材质的输入引脚。

图形编辑器窗口中右键单击,然后在搜索栏中键入设置材料。您应该看到设置材料(静态网格)。单击它并将其添加到场景中。此节点已经引用了静态网格角色(TemplateCube_Rounded),因此我们不必创建引用节点。将其连接到设置节点。最后,从我的蓝图中拖动关键立方体材料,将其放入图形编辑器中,选择获取,并将其连接到材料输入引脚。完成后,点击编译。现在我们将能够在蓝图类之外设置立方体的材料。

构造脚本

让我们来测试一下。将蓝图类添加到关卡中。您将看到一个TemplateCube_Rounded角色添加到场景中。在其详细信息面板中,您将在默认部分下看到一个关键立方体材料选项。这是我们在构造脚本中创建的变量。我们在这里添加的任何材料都将添加到立方体上。因此,点击,然后选择KeyCube_Material。一旦您选择它,您将看到立方体上的材料。这是使用构造脚本可以做的许多事情之一。目前,只有这样做。

事件图

现在我们需要脚本化关键立方体的功能。这与我们在级别蓝图中使用第一个关键立方体所做的基本相同,只是有一些小的不同。在事件图面板中,我们要脚本化的第一件事是当玩家重叠和停止重叠触发框时启用和禁用输入。在组件部分,右键单击。这将打开一个菜单。将鼠标悬停在添加事件上,然后选择添加 OnComponentBeginOverlap。这将在图形编辑器中添加一个开始重叠节点。接下来,我们需要一个投射节点。投射节点用于指定要使用的角色。在图形编辑器中右键单击,添加一个投射到角色节点。将其连接到OnComponentBeginOverlap节点,并将另一个角色引脚连接到投射到角色节点的对象引脚。最后,添加一个启用输入节点和一个获取玩家控制器节点,并像在级别蓝图中一样连接它们。

接下来,我们将为玩家停止重叠框时添加一个事件。同样,在上右键单击,然后添加一个OnComponentEndOverlap节点。与OnComponentBeginOverlap节点做完全相同的事情;只是在这里,不是添加启用输入节点,而是添加一个禁用输入节点。设置应该看起来像这样:

事件图

您可以移动我们之前放置在基座上的关键立方体,将其设置为隐藏,并将关键立方体蓝图类放在其位置。还要确保将触发器角色的碰撞响应设置为忽略

事件图

下一步是脚本化当玩家触摸屏幕时销毁关键立方体。这也与我们在级别蓝图中所做的类似,有一些不同之处。首先,添加一个触摸节点和一个序列节点,并将它们连接在一起。接下来,我们需要一个销毁组件节点,您可以在组件 | 销毁组件(静态网格)下找到它。此节点已经在其中引用了关键立方体(静态网格),因此您不必创建外部引用并将其连接到节点。将其连接到然后 0节点。

在玩家拾取关键立方体后,我们还需要激活触发器。现在,由于我们无法直接在蓝图类外部的演员上调用函数(就像我们在关卡蓝图中可以),我们需要创建一个变量。这个变量将是Trigger Box类型。它的工作方式是,当您创建了一个Trigger Box变量后,您可以将其分配给关卡中的任何触发器,并且它将调用该特定触发器的函数。考虑到这一点,在我的蓝图面板中,单击添加新内容并创建一个变量。将此变量命名为Activated Trigger Box,并将其类型设置为Trigger Box。最后,确保您选中了可编辑框;否则,您将无法将任何触发器分配给它。在这样做之后,创建一个设置所有通道的碰撞响应节点(取消选中上下文敏感框),并将新响应选项设置为重叠。对于目标,拖动Activated Trigger Box变量,将其放入图形编辑器中,选择获取,并将其连接到目标输入。

最后,对于后期处理体积,我们需要创建另一个类型为PostProcessVolume的变量。您可以将此变量命名为Visual Indicator,同时确保可编辑框已被选中。将此变量添加到图形编辑器中。接下来,单击它的引脚,将其拖出并释放,这将打开操作菜单。在这里,键入Enabled,选择Set Enabled,并选中Enabled。最后,添加一个延迟节点和一个销毁演员,并按顺序将它们连接到Set Enabled节点。您的设置应该看起来像这样:

事件图

视口中,您会发现在蓝图类演员的默认部分下,出现了两个新选项:激活触发框视觉指示器(我们创建的变量)。使用这个,您可以指定要更改哪个特定触发框的碰撞响应,以及要激活和销毁哪个后期处理体积。在这两个变量的前面,您会看到一个眼睛滴管形状的小图标。您可以使用这个来选择您希望分配相应变量的外部演员。使用这些变量编写的任何内容都将对您在场景中分配的演员产生影响。这是蓝图类提供的众多令人惊叹的功能之一。现在我们只需要为剩下的关键立方体做以下几件事:

  • 将它们放置在关卡中

  • 使用位于变量名称旁边的眼滴图标,选择在玩家拾取关键立方体后要激活的触发器,以及要激活和销毁的后期处理体积。

在第二个房间中,我们有两个关键立方体:一个用于激活大门,另一个用于激活通往第三个房间的门。第一个关键立方体将放置在靠近大门的基座上。因此,选择第一个关键立方体,使用眼滴图标,为Activated Trigger Box变量选择靠近大门基座上的触发框。然后,为Visual Indicator变量选择放置关键立方体的后期处理体积。

我们需要做的下一件事是打开关卡蓝图,并编写当玩家将关键立方体放置在靠近大门的基座上时发生的事情。与前一个房间所做的一样,我们设置节点,将隐藏的基座上的关键立方体显示出来,并将大门周围的触发框的碰撞响应更改为重叠,确保最初设置为忽略

事件图

测试一下!你会发现一切都按预期工作。现在,对剩下的关键立方体做同样的操作。选择触发盒和后期处理体积在触摸屏幕时激活。然后,在关卡蓝图中,编写哪个关键立方体要显示,等等(将之前放置在基座上的关键立方体设置为隐藏),并将蓝图类关键立方体放在其位置上。

这是使用蓝图类的众多方法之一。你可以看到这需要很多工作和麻烦。现在让我们继续进行人工智能的工作。

脚本化基本 AI

回到第三个房间,我们现在要在游戏中实现 AI。我们在第三个房间中有一个 AI 角色,当激活时会移动。主要目标是通过开关为其制作一条路径,并防止其掉落。当 AI 角色到达目的地时,它将解锁关键立方体,玩家随后可以拾取并放置在基座上。我们首先需要创建另一个Character类型的蓝图类,并命名为AI_Character。创建后,双击打开它。你会看到视口中已经设置了一些组件。这些是CapsuleComponent(主要用于碰撞),ArrowComponent(用于指定角色的前面和后面),Mesh(用于角色动画)和CharacterMovement。所有这四个都是默认设置的,不能被移除。我们唯一需要做的是为我们的角色添加一个静态网格,它将是TemplateCube_Rounded

点击“添加组件”,添加一个“静态网格”,并在其“详细信息”面板中分配“TemplateCube_Rounded”。接下来,将这个立方体沿着三个轴缩放为0.2,并将其移动到CapsuleComponent的底部,这样它就不会漂浮在空中了。

脚本化基本 AI

这就是我们对 AI 角色的要求。其余的工作我们将在关卡蓝图中处理。接下来,将AI_Character放置在坑洞的玩家一侧,并放置所有开关。直接将其放置在目标点演员的正上方。

脚本化基本 AI

接下来,打开关卡蓝图,让我们开始编写脚本。最左边的开关将用于激活 AI 角色,其余三个将用于绘制路径的部分,以便它可以走到另一侧。

为了移动 AI 角色,我们将需要一个AI Move To节点。我们首先需要一个触发第一个开关的重叠事件,这将启用输入,否则 AI 角色将在玩家触摸屏幕时开始移动,这是我们不想要的。设置一个重叠事件,一个启用输入节点和一个事件。将重叠事件连接到启用输入事件,然后连接到节点的打开输入。

接下来要做的是创建一个触摸节点。我们将附加一个AI Move To节点。你可以输入它,也可以在 AI 部分下找到它。创建后,将其连接到节点的退出引脚。

脚本化基本 AI

现在我们需要告诉节点我们要移动哪个角色,以及它应该移动到哪里。要指定我们要移动哪个角色,选择视口中的 AI 角色,在关卡蓝图的图形编辑器中,右键单击并为其创建一个引用。将其连接到Pawn输入引脚。接下来,对于位置,我们希望 AI 角色朝着坑洞另一侧的第二个目标点演员移动。但首先,我们需要获取它在世界中的位置。选择它,右键单击图形编辑器,输入获取演员位置。这个节点返回世界中一个演员的位置(坐标)(连接到它的那个)。这将创建一个获取演员位置,将目标点演员连接到其输入引脚。

最后,将其返回值连接到AI 移动到节点的目的地输入。

脚本基本人工智能

如果你进行测试,你会发现它运行良好,除了一件事:当 AI 角色到达坑的边缘时会停止。我们希望它在没有路径时掉入坑。为此,我们需要一个Nav 代理链接角色。如前一章所述,当 AI 角色需要暂时离开 Nav Mesh(例如,在台阶之间跳跃)时,会使用Nav 代理链接角色。如果我们希望 AI 角色从悬崖上掉下来,我们将需要它。您可以在模式面板的所有类部分中找到它。将其放置在关卡中。

脚本基本人工智能

该角色由两个带有弯曲箭头连接的圆柱表示。我们希望第一个圆柱位于坑的一侧,另一个圆柱位于另一侧。使用缩放工具,增加Nav 代理链接角色的大小。

脚本基本人工智能

放置Nav 代理链接角色时,请记住两件事:

  • 确保两个圆柱相交在绿色区域;否则,该角色将无法工作

  • 确保两个圆柱与 AI 角色对齐;否则,它将不会沿直线移动,而是移动到圆柱所在的位置

放置后,您会发现当 AI 角色到达坑的边缘时会掉下来。我们还没有完成。我们需要将 AI 角色带回其起始位置,以便玩家可以重新开始(否则玩家将无法继续)。为此,我们首先需要在坑底放置一个触发器,确保如果 AI 角色掉入其中,它会重叠触发器。此触发器将执行两个操作:首先,它将将 AI 角色传送到其初始位置(借助第一个目标点);其次,它将停止AI 移动到节点,否则即使已被传送,它也会继续移动。

脚本基本人工智能

放置触发器后,打开关卡蓝图并为触发框创建一个重叠事件。为此,我们将添加一个Sequence节点,因为当玩家重叠触发器时,我们要调用两个单独的函数。我们要创建的第一个节点是Teleport节点。在这里,我们可以指定要传送的角色和位置。我们要传送的角色是 AI 角色,所以为其创建一个引用并将其连接到目标输入引脚。至于目的地,首先使用获取角色位置函数获取第一个目标点角色的位置(AI 角色最初放置在其上),并将其连接到目标位置输入。

脚本基本人工智能

要停止 AI 角色的移动,在图形编辑器中右键单击任意位置,首先取消选中上下文敏感框,因为我们不能直接在 AI 角色上使用此功能。我们需要的是停止活动移动节点。在搜索栏中键入它并创建它。将其连接到然后 1输出节点,并将 AI 角色的引用连接到它。它将自动从角色引用转换为角色移动组件引用。

脚本基本人工智能

这就是我们需要为第三个房间的 AI 编写的所有内容。还有一件事:如何解锁关键立方体。但我们将在下一章中介绍这一点,因为它涉及 Matinee。

在第四个房间,我们将使用相同的原理。在这里,我们将制作一系列AI 移动到节点,每个节点都连接到前一个节点的成功时输出引脚。这意味着当 AI 角色成功到达目的地(目标点演员)时,它应该移动到下一个目标,依此类推。利用这一点,以及我们刚刚讨论的关于 AI 的内容,编写 AI 将遵循的路径(回想一下上一章,在那里我们勾画了 AI 角色在第四个房间中将走的路径)。

编写基本 AI 脚本

总结

在本章中,我们介绍了蓝图并讨论了它们的工作原理。我们还讨论了关卡蓝图和蓝图类,并介绍了如何编写 AI 脚本。我们还有一些脚本要做,但首先我们需要讨论虚幻 Matinee 的主题。在下一章中,我们将做到这一点。

第六章:使用虚幻 Matinee

虚幻 Matinee 是虚幻引擎 4 提供的另一个强大工具。虚幻 Matinee 用于创建电影,过场动画,动画,布景等。它也很容易学习,您可以使用它来创建令人惊叹的东西。通常,Matinee 与蓝图一起使用。在上一章中,我们在游戏中留下了一些脚本,现在我们将进行介绍。本章将涵盖以下主题:

  • 什么是虚幻 Matinee?

  • 虚幻 Matinee 用户界面

  • 在我们的游戏中使用虚幻 Matinee

什么是虚幻 Matinee?

虚幻 Matinee 是一种动画工具。它提供了工具,您可以使用这些工具在游戏过程中对演员的属性进行动画处理,或者创建电影,过场动画,布景等。借助曲线和关键帧,您可以使用这个工具在游戏中对演员进行动画处理,就像专业人员使用的任何其他视频编辑软件一样。您还可以使用 Matinee 设置 Matinee 事件。

添加 Matinee 演员

在您可以使用 Matinee 之前,您需要做的第一件事是将 Matinee 演员添加到场景中。Matinee 演员由一个类似于电影片场上看到的响板的图标表示,如下截图所示:

添加 Matinee 演员

我们已经讨论了通过 Modes 面板在第四章中添加 Matinee 演员的一种方法,使用演员,类和体积。另一种添加 Matinee 演员的方法是通过单击视口工具栏中的Matinee按钮,这将打开一个下拉菜单,同时可以查看放置在场景中的 Matinee 演员的数量。在菜单的顶部,在新建部分下,您可以通过单击添加 Matinee来创建一个新的 Matinee 演员。在此之下,在编辑现有的 Matinee部分,您可以找到放置在列表中的所有 Matinee 演员的列表。双击其中任何一个以进行编辑。

当您创建新的 Matinee 演员或双击现有演员时,将打开一个新窗口。让我们仔细看一下。

虚幻 Matinee 用户界面

任何使用虚幻开发工具包UDK)中的 Matinee 的人都会发现布局和用户界面非常相似。

虚幻 Matinee 用户界面

选项卡和菜单栏

就像在 Web 浏览器中一样,在选项卡栏中,您可以看到当前打开了多少窗口,切换它们之间,重新排列它们,并关闭其中的任何一个。

选项卡和菜单栏

在下面是菜单栏,包含以下操作和功能:

  • 文件:从这里,您可以选择从 FBX 文件导入序列(因为 FBX 文件除了存储网格外,还存储对象的动画,导入它将导入该 FBX 文件的动画序列到 Matinee),导出动画序列,保存序列等

  • 编辑:使用此选项卡,您可以撤消或重做先前的操作,添加或删除关键帧,编辑部分等

  • 播放:这为您提供了播放,暂停,停止,循环和反转动画序列的选项

  • 视图:在这里,您可以设置您希望查看的内容,启用网格捕捉,在轨道视图面板中适合整个序列等

  • 窗口:此选项卡允许您通过设置要在 UI 中显示的面板和窗口等来自定义 Matinee UI

  • 帮助:您可以从这里访问有关 Matinee 的文档和教程

工具栏

在菜单栏下方是工具栏。在这里,您可以访问最常用的操作。

工具栏

从左到右,图标如下:

  • 添加关键帧:这会在动画轨道的当前位置添加一个关键帧。

  • 插值:插值意味着在两个点之间找到一个点。在关键帧动画中,插值是一个重要的工具,因为它使动画变得平滑。通过这个选项,您可以设置关键帧和曲线的初始插值模式。您可以选择线性、恒定、曲线自动夹紧、曲线自动等。

  • 播放:播放按钮播放您创建的动画序列。您可以在编辑视口中看到动画。动画只播放一次。

  • 循环:如果要多次查看动画,可以单击循环按钮,动画完成后将循环播放。

  • 停止:单击此按钮将停止动画。

  • 反向:这将以相反的方式播放动画。

  • 相机:单击此按钮将使您能够创建相机组。

  • 播放速度:使用此选项,您可以设置动画播放的速度。您可以选择100%50%25%10%1%的正常播放速度。

  • 快照设置:如果启用了网格捕捉,您可以从这里设置快照大小。

  • 曲线:默认情况下启用,您可以使用此选项打开/关闭曲线编辑器窗口。

  • 捕捉:由磁铁表示,此选项切换网格捕捉。

  • 时间转换为帧:这将时间轴游标捕捉到Snap Setting中设置的快照大小。仅当快照大小以帧每秒为单位时才启用。

  • 固定时间:使用此选项,您可以将播放速度固定为Snap Setting菜单中选择的帧速率。只有在帧每秒的快照设置中才有效。

  • 序列:单击此按钮以缩放以适应您在轨道面板中创建的整个序列。

  • 已选择:这将缩放以适应轨道面板中所选关键帧。

  • 循环:这将缩放时间轴以适应动画序列中的循环部分。

  • 循环序列:这将循环部分的起始点设置为动画序列的开始,将结束点设置为序列的结束。换句话说,单击此选项将调整并适合循环部分到您创建的整个动画序列。

  • 结束:如果单击工具栏最右侧的箭头,您将找到另外三个图标。它们中的第一个是结束。这将将轨道时间线移动到序列的末尾。

  • 录制器:这将打开Matinee Recorder窗口,您可以使用它来记录 Matinee 的序列。

  • 电影:最后,我们有电影选项。您可以使用它从您创建的动画序列中创建电影。

曲线编辑器

接下来我们要看的是曲线编辑器。与任何动画软件一样,您可以使用曲线来编辑动画。如果您想在动画序列中使用粒子系统,也可以使用它。曲线还有其他许多用途,但这些是最常见的用途。x轴表示时间,y轴表示您在 Matinee 中随时间变化的值。曲线编辑器中的曲线显示了值随时间的变化。例如,如果值以恒定速率变化,曲线将是线性的;如果值呈指数变化,曲线将是指数曲线,依此类推。

要查看和编辑曲线,您首先必须在轨道面板中切换它们。完成后,您将看到相应动画序列的曲线,然后可以编辑它以进一步编辑或微调动画。

曲线编辑器

顶部是曲线编辑器的工具栏。让我们看看它的选项:

  • 水平:此选项可使所选曲线组在水平方向上适合缩放。

  • 垂直:这与水平选项相同,但它使所选曲线组在垂直方向上适合缩放。

  • 全部:它在水平和垂直方向上都适合曲线,以便整个曲线在曲线编辑器中可见。

  • 已选择:此选项执行与全部相同的功能,但仅适用于所选点。

  • 平移:将曲线编辑器切换到平移模式,这意味着您可以通过按住鼠标左键并拖动来在图形编辑器中移动。

  • 缩放:切换到缩放模式。您可以通过按住鼠标左键并拖动鼠标来放大和缩小。

  • 自动:将所选曲线的插值更改为自动

  • 自动/夹紧:将所选曲线的插值设置为自动/夹紧

  • 用户:此选项将插值更改为用户(如果您在设置为自动自动/夹紧时对曲线进行任何更改,它将更改插值为用户)。

  • 中断:将插值更改为中断

  • 线性:将插值更改为线性。这意味着两个点之间的曲线将是线性的,也就是说,在两个关键帧之间是一条直线。

  • 恒定:将插值更改为恒定。这意味着所选关键帧之间的曲线将是一条水平直线。换句话说,Y轴上的值将随时间保持恒定。

  • 平坦:单击此按钮将使所选曲线的切线变平,使其变平。

  • 拉直:此选项会删除所选曲线的切线上的任何不规则之处,并使其变直。

  • 显示全部:显示所有曲线的所有切线。

  • 创建:最后,我们有创建选项卡按钮。您可以选择创建多个选项卡。您可以通过单击工具栏极端右侧的箭头按钮并使用当前选项卡菜单选择要转到的选项卡来在选项卡之间切换。您还可以删除当前选项卡。

在工具栏下方,左侧是轨道列表。在这里,您可以看到当前选项卡中的所有轨道。顶部是轨道的名称,底部是可以切换开/关的按钮。在这个例子中,我们有一个移动轨道,所以有三个按钮分别代表每个轴:红色代表X轴,绿色代表Y轴,蓝色代表Z轴。最右边是一个黄色按钮,可以用来切换整个轨道的开/关。

曲线编辑器

在右侧,我们有图形编辑器,您可以在那里查看和调整曲线。

曲线编辑器

在这里,您可以看到有三条单独的曲线,每条曲线代表我们刚讨论过的按钮。您可以在这里调整每条曲线以获得所需的结果。选择曲线上的一个点并更改切线以改变曲线的形状。

轨道面板

轨道面板中,您可以看到动画序列中的所有轨道、文件夹和组。

轨道面板

在这里,您可以看到指定动画持续时间、创建的组、参与动画的所有组件等时间轴。面板顶部是选项卡栏。下面是选项卡。对于简单的动画,您实际上不需要这个,但是如果您有一个复杂的动画序列(比如电影或过场动画),您可能希望利用此功能来保持工作站整洁有序。您可以将类似的角色放在各自的选项卡中。例如,如果您有摄像机,您可以将它们放在摄像机组中。要创建组或文件夹,请右键单击它;这将打开一个菜单,您可以从中创建组或文件夹。

选项卡下方,左侧是组和轨道列表。列出了动画序列或当前选项卡中的所有组和轨道。您还可以在这里添加或删除组。

轨道面板

如您所见,组下有各种轨道。每个单独的轨道都有自己的动画,您可以进行编辑。您还可以通过单击每个轨道左侧的灰色框来切换整个轨道的开/关。右下角还有两个框。左侧的按钮可以启用或禁用在动画序列中播放的相应轨道。右侧的按钮可以启用或禁用该轨道的曲线编辑器。还有一些轨道没有这两个按钮,表明这些轨道没有曲线。

右侧是动画时间轴。

轨道面板

在底部,您可以看到动画时间刻度。在其上方,半透明的白色框带有红色边缘,表示动画时间的总持续时间。您可以单击边缘并将其向左或向右拖动,以相应地减少或增加动画的持续时间。浅绿色框显示了循环序列的持续时间。这意味着只有绿色部分内的部分将循环,其余部分将被忽略。您还可以通过单击并拖动绿色箭头向右或向左来增加或减少其大小。还有时间轴滑块,由白线表示,您可以使用它跳转到任何帧。最后,您可以单击时间轴上的任何位置跳转到任何帧。时间轴滑块将跳转到您单击的位置。

详细面板

最后是详细面板,您可以在其中设置某些轨道、组等的属性。

详细面板

上述截图显示了移动轨道关键帧的属性。您可以在视口中切换移动轨道的播放,切换旋转开/关,设置是否要在编辑器视口中看到轨道等。

门的动画

现在您已经熟悉了虚幻 Matinee 及其用户界面,我们可以继续向游戏中添加一些动画。这包括门的开启动画、第一个房间中的小片段以及为 AI 角色绘制桥梁的动画。

房间 1

现在是时候在我们的游戏中实际使用 Matinee 了。选择第一个房间中门附近的 Matinee 角色,并在详细面板中单击打开 Matinee。打开后,第一步是添加一个组。在制作组之前,请确保您在编辑器视口中选择了要进行动画处理的角色;否则,组中将没有任何角色引用,并且您将收到一个错误,指示没有要关键帧,或者所选对象无法在此类型的轨道上进行关键帧处理

单击门以选择它,在轨道面板的轨道列表上右键单击,然后选择添加新的空组。当要求命名组时,请将其命名为并按Enter。门将附加到此组中。这将创建一个空组,您可以在其中放置多个轨道(移动、可见性、粒子等)。首先,我们需要一个移动轨道。右键单击,然后选择添加新的移动轨道。创建后,您将在轨道面板中看到它。

房间 1

现在,我们不希望动画持续 5 秒,因为对于简单的门开启动画来说太长了,会不必要地减慢游戏速度。因此,通过左键单击位于 5 秒标记上方的极端右侧的红色箭头,并将其移回到 2 秒标记上,将动画持续时间减少到 2 秒。如果需要,您还可以通过对绿色框右边的绿色箭头执行相同操作,将循环序列持续时间从 1 秒增加到 2 秒。

房间 1

在时间轴上,在移动轨道之前,您将看到一个小的栗色箭头覆盖在 0 秒标记上。这是一个关键帧。由于我们有一个简单的动画,我们只需要两个关键帧:一个在动画序列开始时,另一个在结束时(如前面的截图所示)。要添加第二个关键帧,请将动画滑块移动到动画时间轴的末尾,然后按Enter

现在我们已经设置好了关键帧,回到编辑器。

Room 1

您会注意到在视口的左上角有一些东西。每当您打开 Matinee 时,视口会更改以预览相应的 Matinee 动画。在左上角,用白色文字写着Matinee。这基本上是在通知视口当前设置为预览模式。它旁边,用青色文字写着视口的分辨率。下面,用绿色文字写着相应 Matinee 动画的帧数。在左上角,它写着Matinee。它旁边,您可以看到分辨率,下面是动画的总帧数。在这种模式下,您无法保存、打开或加载场景,也无法播放游戏。为了执行这些操作中的任何一个,您必须首先关闭 Matinee。

现在,确保时间轴滑块位于动画时间轴的末尾,使用变换工具,将门向上或沿着z轴移动。移动它直到它不再挡路。

Room 1

每当移动门时,您会看到一个垂直的黄色线。这条线显示了动画播放时门将要遵循的路径。要查看动画,请返回到 Matinee 并在工具栏中点击播放按钮。

我们接下来需要做的是利用之前添加的摄像头。当玩家将关键方块放在基座上时,我们希望播放一个小的过场动画,展示它的效果,以便玩家知道房间的主要目标是什么。在这个过场动画中,我们将:

  1. 将控制权从玩家手中拿走。

  2. 从主摄像头切换到门前的摄像头。

  3. 播放动画。

  4. 将玩家控制权交还给角色。

为此,我们需要添加一个摄像头组。返回到 Matinee 窗口,在轨道面板上右键单击,然后点击添加新摄像头组(再次确保在视口中选择了摄像头)。将此组命名为摄像头

Room 1

摄像头组有两个轨道:一个移动轨道和一个FOVAngle角度轨道。您可以在 Matinee 播放时使用它来移动摄像头并设置其视野。在这种情况下,我们希望摄像头保持静止。因此,将时间轴滑块移动到时间轴的末尾,并在摄像头组的移动轨道上按Enter创建一个关键帧。

我们需要的下一件事是所谓的导演组。它的一个用途是在播放动画时分配要切换到哪个摄像头。同样,在轨道面板上右键单击,然后选择创建新导演组。将为导演组在轨道面板上方创建一个新的、独立的轨道。

Room 1

现在我们有了我们的导演组,我们需要告诉它在动画播放时切换到哪个摄像头。要做到这一点,选择它并按Enter。这将打开一个小窗口,询问您要切换到哪个组。这个窗口列出了我们在 Matinee 中创建的所有组。在这里,点击下拉菜单,选择摄像头,然后点击确定(确保时间轴滑块在 0 秒标记处)。完成后,摄像头组将被分配给导演组。

Room 1

现在,如果播放 Matinee,您会看到在视口中,摄像机切换到我们放在门前的摄像机。我们已经设置好了我们的 Matinee。现在我们需要编写它何时播放。我们希望在玩家将钥匙方块放在基座上时播放。因此,打开蓝图,在我们为放置钥匙方块创建的序列中,添加一个Sequence节点。将其附加到Gate节点。接下来,将Then 0输出引脚附加到Set Actor Hidden in Game节点。

Room 1

接下来,在视口中选择Matinee演员,右键单击并创建其引用。然后,拖动此节点的引脚,并在菜单打开时输入Play以创建Play节点。将其附加到Sequence节点的 Then 1 引脚上。

Room 1

如果您测试关卡,您会看到一切都按预期工作;当玩家将钥匙方块放在基座上时,摄像机将切换到门前的摄像机,并且门的动画将开始播放。但是,还有一件事情要做。在剧情片段播放时,您仍然可以控制玩家(移动和射击)。我们希望在动画播放时玩家无法移动或射击。为此,选择Matinee演员,在详细信息面板中,在电影部分下,勾选以下内容:

  • 禁用移动输入

  • 禁用观看输入

  • 隐藏玩家

Room 1

到此为止:我们刚刚创建了自己的剧情片段。让我们继续进行第二个房间的大门。

Room 2

在第二个房间的中间,我们有一扇大门。我们希望玩家在将第一个钥匙方块放在基座上时能够使用它。到目前为止,这与之前的门非常相似。这里唯一的区别是:

  1. 玩家在屏幕上触摸时门打开(前提是它首先被解锁)。

  2. 玩家从屏幕上释放手指时门关闭。

在这里,Matinee 部分将类似;我们将创建一个持续 2 秒的移动轨道,并使门向上移动。在这里,由于我们不是在创建一个剧情片段,因此我们不需要Camera组或Director组,也不需要在 Matinee 运行时禁用玩家输入。考虑到这一点,选择靠近大门的Matinee演员,并在详细信息面板中单击打开 Matinee。使用Movement轨道来为门制作动画,就像我们之前为另一扇门所做的那样。

完成后,打开关卡蓝图。在这里,我们将不再使用立方体打开门,而是使用触摸输入节点。与之前的触发器一样,为门周围的大触发器添加一个重叠事件。设置节点如下截图所示:

Room 2

在这里,当玩家重叠触发器时,它会启用玩家输入并打开Gate节点。现在,当玩家触摸屏幕时,它将播放Matinee。我们需要编写的唯一事情是玩家释放屏幕时会发生什么。在这里,当玩家停止触摸屏幕时,门将关闭,也就是Matinee将以相反方式播放。

为此,创建Matinee演员的另一个引用(或只需复制已有的引用),创建一个Reverse节点,并将Matinee演员附加到其Target输入。

Room 2

现在测试游戏,当您将钥匙方块放在第一个基座上并点击门时(在编辑器中播放时,鼠标按钮充当触摸输入),门会打开;一旦您松开,它会再次关闭。在第 4 个房间的门上也是一样,但您无需先解锁门;您可以简单地编写脚本,使其在玩家靠近并触摸屏幕时打开,并在玩家从屏幕上释放手指时关闭。让我们继续进行桥梁的平台。

AI 角色的桥梁

在 AI 角色的房间里,玩家必须为它建造一座桥,这样它就可以穿过坑并解锁关键方块。有开关可以绘制桥的一部分。玩家必须在 AI 角色掉进坑之前迅速绘制桥的所有部分。在第三个房间,桥将有三个部分,每个部分由基座上的开关绘制。对于我们的桥,我们将使用 Cube 原始角色。将三个 Cube 原始角色添加到场景中,将它们的比例设置为2.22.50.3,并将它们放在坑的底部。确保将它们的移动性设置为可移动

AI 角色的桥梁

完成后,添加三个 Matinee 演员,每个部分一个。然后,在 Matinee 中,将动画时间设置为 1 秒,并通过移动来动画部分上升,使其与地面对齐。确保部分完全对齐。如果太高,AI 角色将无法上去,如果太低,AI 角色将无法到达另一侧。如果看到部分的上表面是绿色的(因为导航网格边界体),这意味着 AI 角色可以行走在上面,如下截图所示:

AI 角色的桥梁

对于剩下的两个部分也要做同样的操作,确保它们在绘制时完美契合。

AI 角色的桥梁

接下来我们需要在游戏中编写 Matinee。在第三个房间有四个基座。从左到右,第一个激活 AI 角色,第二个绘制桥梁的第一部分,第三个绘制第二部分,第四个绘制第三部分。因此,打开关卡蓝图,就像在第二个房间的大门一样,编写蓝图,使得当玩家靠近开关并触摸屏幕时,Matinee 会播放。对于所有三个触发盒,都要这样做,播放它们各自的 Matinee。

AI 角色的桥梁

当 AI 角色掉进坑时,我们希望桥的部分回到坑的底部,这样当玩家重新开始时,他们必须再次按下开关来绘制部分。返回到将 AI 角色传送回起始位置的触发盒。对于Sequence节点,添加一个引脚,为所有三个 Matinee 演员创建一个引用。创建一个Reverse节点,并将所有三个演员连接到它。

AI 角色的桥梁

现在,如果 AI 角色掉进坑里,除了被传送回起始位置,桥梁的部分也会重置到它们的原始位置。

我们已经设置好了谜题。然而,目前这个谜题没有回报。我们之前提到,当 AI 角色穿过坑时,它会解锁关键方块。但现在,我们的关键方块似乎没有被锁住。我们可以把关键方块囚禁起来,当 AI 角色成功穿过坑时打开。为此,在关键方块周围放置四个立方体(作为囚笼的墙壁),创建它们打开的 Matinee,并设置一个触发盒,当 AI 角色重叠触发盒时,播放 Matinee。因此,在关键方块周围放置四个立方体,将其围住,并将门的材质应用于它们(如果愿意,可以复制 Door_Material,并在材质编辑器中删除与 Refraction 表达式的连接,并将其应用于墙壁,以便从坑的另一侧正确看到关键方块)。在放置这些时,确保关键方块周围的触发盒也被墙壁包围。

AI 角色的桥梁

现在在这个笼子附近添加一个 Matinee,并在目标点演员上放置一个触发框。打开 Matinee,这样我们就可以创建我们的动画。在这里,我们有四个独立的对象需要进行动画。然而,由于它们都一起进行动画,为每堵墙创建四个不同的 Matinee 演员将是浪费的。相反,我们将在同一个 Matinee 中对所有四堵墙进行动画。为此,我们将创建四个不同的组,每个组都有一个移动轨道,分别用于每堵墙。选择第一堵墙,创建一个空组(命名为Wall1),带有一个移动轨道,并将其向下移动进行动画。将动画时间设置为 1 秒。然后,为第二堵墙创建另一个空组(命名为Wall2),带有一个移动轨道,并将其向下移动进行动画。对于剩下的两堵墙也是同样的操作。

AI 角色的桥梁

现在我们有四个独立的动画对象,它们使用相同的 Matinee 演员。剩下的事情就是为触发框设置重叠事件,以播放 Matinee。

AI 角色的桥梁

根据你所学到的知识,在制作第四个房间的桥梁时,应用相同的方法,确保 AI 角色在桥梁被绘制时可以穿过它们。

总结

在本章中,我们介绍了虚幻 Matinee:它是什么,它的用户界面,以及可以用它做什么。我们使用它来创建过场动画并对门和桥进行动画。通过这样,我们完成了我们的小游戏,展示了 UE4 提供的各种功能和工具。下一步是完成游戏(添加主菜单,完善游戏等),将其打包成一个.apk文件,将其移植到 Android 设备上,并在那里进行测试。

第七章:完成、打包和发布游戏

在过去的几章中,我们一点一点地构建了一个游戏。我们首先使用 BSP 刷子构建了世界,添加了灯光和静态网格,创建了材质并将其应用于网格。然后,我们添加了各种类和体积,这些都是开发游戏和增强游戏玩法所需的。在添加了所有角色之后,我们开始使用蓝图、级别蓝图和蓝图类来编写游戏。最后,我们利用 Matinee 创建了过场动画和动画。

我们现在有一个运行良好的游戏。下一步是完成游戏,将其打包成.apk文件,并将其发布到 Google Play 商店。

使用虚幻动态图形添加主菜单

如果您玩过任何类型的游戏,您会发现它们都有一个主菜单。让我们也为我们的游戏添加一个。我们的主菜单将非常简单。我们将在中心放置游戏的名称。当玩家点击名称下方时,游戏将加载。游戏的菜单、UI、抬头显示HUD)等及其功能可以使用虚幻动态图形UMG)轻松创建。UMG 是一个易于使用的工具,具有简单直观的编辑器,您可以快速学会使用它来制作游戏的菜单等。

UMG 编辑器

要访问 UMG 编辑器并制作用户界面,您首先需要创建一个Widget Blueprint类。在内容浏览器中右键单击,在用户界面下选择Widget Blueprint。将其命名为Main_Menu,然后双击它以打开UMG 编辑器

UMG 编辑器

标签和菜单栏

选项卡栏显示当前打开的选项卡。您可以从这里切换、关闭、重新排列和移动任何选项卡。

选项卡和菜单栏

菜单栏是您可以找到您将使用的操作的地方:

  • 文件:从这里,您可以保存您的小部件蓝图,编译您创建的蓝图,打开所选资产等等。

  • 编辑:在这里,您可以撤消或重做上次的操作,并打开编辑器和项目首选项。

  • 资产:从这里,您可以找到在内容浏览器中选择的任何资产,以及查找所选资产的引用。

  • 视图:在这里,您可以选择隐藏/显示蓝图中存在的任何未使用的引脚。

  • 调试:如果您在蓝图中创建了断点(用于调试错误),则可以在此启用/禁用它们并全部删除它们。

  • 窗口:从这里,您可以选择要查看的面板或窗口以及不需要查看的面板或窗口。

  • 帮助:最后,如果您需要有关小部件的任何教程或文档,可以从这里访问它们。

工具栏

在菜单栏下方是工具栏。这里列出了所有最常用的操作。

工具栏

  • 编译:单击此选项会编译类并通知用户任何错误和/或警告

  • 保存:这将保存您对小部件类所做的所有修改。

  • 在 CB 中查找:此选项在内容浏览器中定位所选对象

  • 播放:这将在编辑器视口中播放游戏

  • 调试过滤器:列出了您设置为调试的所有变量和/或节点

UMG 编辑器中有两个窗口:设计师图形设计师窗口是您打开小部件类时看到的窗口。这是您设计用户界面的地方。这包括添加 UI 元素,在图形编辑器中排列它们,设置它们的属性等等。另一个窗口是图形窗口,看起来像级别蓝图窗口。这是您为用户界面进行所有视觉脚本编写的地方。

工具栏

所有菜单都具有与任何其他蓝图窗口中找到的相同操作。

图形编辑器

屏幕中央是图形编辑器。在这里,您可以制作和设计您的用户界面。

图形编辑器

在中心,您可以看到一个虚线矩形。这被称为画布,它代表游戏屏幕。您想要放在小部件中的所有 UI 元素都在这里。这显示了元素将在哪里,它们将在屏幕上的外观以及它们将在游戏屏幕上排列的位置。

在图形编辑器的左下角,您可以看到屏幕的分辨率。在屏幕的右下角是显示每英寸点数(DPI)比例的地方。您可以通过单击其旁边的齿轮图标来更改此比例。

在左上角,您可以看到缩放比例。最后,在右上角有一些按钮。从左到右,它们已列出如下:

  • 小部件布局转换:这用于转换和设置您为 UI 创建的小部件的布局。

  • 小部件渲染转换:这是用于转换整个 UI 本身的。

  • 网格捕捉:这可以切换网格捕捉的开/关状态。

  • 网格捕捉值:如果启用,您可以从这里设置捕捉值。

  • 缩放以适应:这会移动和调整图形编辑器,以适应图形编辑器中的整个画布。

  • 预览大小:在这里,您可以设置并查看 UI 在不同设备上的外观,每个设备具有不同的屏幕大小、DPI 和屏幕分辨率。当您为不同设备开发游戏时,这非常方便。

详细面板

详细信息面板是您可以设置所选组件的属性的地方。

详细面板

在这里,您可以设置诸如小部件的转换和枢轴、在按下或悬停在小部件上时添加事件、设置可见性等属性。

调色板面板

有各种小部件元素可用于创建 UI。您可以在Palette面板中找到它们。只需从面板中拖放所需的内容到图形编辑器中以添加该元素。

调色板面板

小部件组件分为四个组,即常用输入面板基本元素

  • 常用:此组包含最常用的小部件,例如按钮、图像框、滑块、进度条等。

  • 输入:此组包含可以从玩家那里接收输入的元素,例如文本框、旋转框、组合框等。

  • 面板:此组包含有助于布局小部件和控制放置小部件的元素。

  • 基本元素:此组包含诸如 Trobbers、可编辑文本等内容。

  • 用户创建:此部分包含您创建或在项目文件中拥有的任何小部件蓝图。您可以从这里添加它们。

层次结构面板

层次面板显示了小部件的所有组件的层次结构。

层次结构面板

顶部是CanvasPanel,它充当 UI 的基础。每当您添加一个组件,它也会被添加到层次结构中。如果您将一个组件拖放到层次面板中的小部件组件上,它将作为父级添加到其中,并且您添加的组件将作为子级添加。它们还会在图形编辑器中连接在一起。

动画面板

UMG 用户界面中的最终组件是位于窗口底部的动画面板。

动画面板

UMG 允许用户创建动画。您可以对小部件组件进行动画处理以满足您的偏好。动画面板的工作方式几乎与虚幻 Matinee 相同。左侧是轨道面板。这是您可以添加、删除或移动动画轨道的地方。要添加动画轨道,请单击+ 新建按钮。

右侧是动画时间轴。这是您使用关键帧创建动画的地方。在左上角有一些设置,例如启用/禁用网格捕捉、网格捕捉值等。

创建主菜单

创建主菜单的第一步是创建一个新的关卡。在编辑器中,单击文件,然后选择新建关卡。当关卡类型窗口打开时,选择空关卡

创建主菜单

将此关卡命名为Main_Menu。创建后,在内容浏览器中打开Main_Menu小部件类。在 UMG 编辑器中,向画布添加一个文本小部件。使文本变大。首先,将文本槽面板的大小增加到 1300 x 200。有两种方法可以做到这一点:第一种方法是单击边缘并拖动以增加大小。第二种方法是在详细信息面板中,您可以将大小 X设置为1000,将大小 Y设置为250

创建主菜单

文本槽现在已设置。但是,文本本身的实际大小相当小。我们需要做的下一件事是增加文本的大小。同样,在详细信息面板下,在外观部分,您将找到字体选项。在最右边,您可以设置字体大小的值。默认情况下,此值设置为24。将其增加到150

创建主菜单

这是我们将显示游戏名称的地方。在内容部分,您可以设置要在屏幕上打印的文本。无论您写什么都会显示在图形编辑器中。删除文本块,并写上游戏的名称:Bloques。最后,调整文本面板的位置,使名称出现在屏幕中央。

创建主菜单

我们要添加的下一件事是一个按钮,当玩家点击时,游戏开始。为此,在调色板面板的常用部分中添加一个按钮小部件。将其放置在游戏名称下方的中央位置。将其尺寸设置为256 x 64。我们还需要一些文本放在按钮上,因此从调色板面板拖动一个文本组件并将其放在按钮上。文本将附加到按钮小部件上。您可以在层次结构面板中看到文本小部件作为组件位于按钮小部件下方。无论您移动按钮小部件,文本小部件都会随之移动。将字体的颜色从白色更改为蓝色,以便清晰可见。

创建主菜单

我们已经放置了按钮,但它什么也没做。我们需要编写其功能。选择按钮后,转到详细信息面板,在事件部分下,单击OnClicked旁边的按钮。窗口将切换到图形窗口,OnClicked按钮事件节点已经设置好。

创建主菜单

对于这个节点,我们将附加一个OpenLevel节点。右键单击并通过在搜索栏中输入来搜索它并将其连接到OnClicked节点。在关卡名称输入中,写入您想要打开的关卡的名称,我们的情况下是Bloques_Game。确保正确复制关卡的名称;否则,它将无法打开。

创建主菜单

最后,我们还需要移除小部件;否则,当关卡加载时,它仍然会存在。右键单击并选择从父级中移除节点,并将其连接到打开关卡节点的输出引脚。

创建主菜单

就是这样。通过蓝图加载关卡真的是如此简单。

我们已经设置好了我们的主菜单。我们需要将其实现到我们的场景中。为此,打开关卡蓝图。在我们能够显示小部件之前,我们首先需要创建它。在事件开始播放部分,右键单击并输入create widget以找到创建小部件节点并连接它们。接下来,在输入中,单击下拉菜单并选择Main_Menu

创建主菜单

当级别开始时,Main_Menu 小部件将被创建。创建后,我们需要将其添加到视口,以便玩家可以看到它。为此,我们需要一个添加到视口节点。将返回值拖出并释放到图形编辑器的任何位置。当菜单打开时,键入添加到视口,找到它,并添加它。

创建主菜单

如果您要测试游戏,您会发现一旦运行游戏,游戏名称和按钮会出现在屏幕上。

创建主菜单

然而,还有一些事情我们可以改进。首先,我们可以隐藏虚拟摇杆,因为它们不是必需的。

在图形编辑器的任何位置右键单击;关闭上下文敏感;找到设置虚拟摇杆可见性节点;将其添加到图形编辑器;并将其连接到添加到视口节点。对于目标输入,您需要创建一个获取玩家控制器并将其附加到目标输入引脚。

创建主菜单

现在运行游戏。虚拟摇杆在运行时将不可见。

创建主菜单

如果您按下按钮,它将加载并带您进入游戏,一旦级别加载完成,UI 将消失。这就是如何将主菜单添加到您的游戏中。

安装 Android SDK

在我们可以打包游戏之前,我们首先需要安装 Android SDK。幸运的是,您不需要在互联网上找到并下载它;它的安装文件可以在 UE4\ 的<位置>\ Unreal Engine\ 4.7\ Engine\ Extras \ Android 中找到。我们需要的文件是 tadp-2.0r8-windows

安装 Android SDK

找到它后,双击运行安装。一旦设置打开,您只需要按照屏幕上的说明进行操作,让它安装。

注意

需要注意的一点是,设置需要互联网连接,因为它会下载构建工具;因此,请确保在安装 SDK 工具时连接到互联网。

一旦您成功安装了 Android SDK 文件,下一步需要做的是告诉引擎所有文件的位置(特别是如果您将 SDK 文件安装在默认位置之外的其他位置)。为此,您首先需要打开项目设置(可以在编辑下的视口菜单栏中找到)。在项目设置窗口的平台部分下,选择Android SDK

安装 Android SDK

在这里,您可以告诉引擎所有文件夹的位置。左侧是构建 Android 所需的所有文件的列表。右侧的面板是设置相应文件目录的地方。有两种方法可以更改这个。您可以在面板中手动输入文件夹的位置,或者单击面板旁边的。单击它时,浏览文件夹窗口会打开,您可以在其中指定文件夹。

安装 Android SDK

  • 第一个选项是针对 Android SDK 文件夹。找到 android-sdk-windows 文件夹并设置它。

  • 第二个选项是针对 Android NDK 文件。找到 android-ndk-r9c 文件夹并设置它。

  • 第三个选项是针对 ANT 文件。找到 apache-ant-1.8.2 文件夹并设置它。

  • 第四个选项是针对 Java 文件。找到 jdk1.6.0_45 文件夹并设置它。对于已经安装了 Java SDK 的开发人员,您需要检查系统环境变量和路径是否正确。

您可以有不同的文件夹名称;您只需要确保当前分配了适当的文件夹。

接下来的两个选项是指定要使用的 SDK 和 NDK 工具的版本。Android SDK 文件现在已经安装并设置好了。接下来要做的是为测试设置您的 Android 设备。

设置 Android 设备

在开发游戏时,您自然会想要不时地测试游戏,看看它在设备上是否运行顺畅。您可以选择直接在安卓设备上构建和运行游戏,而不是首先打包游戏,将其放在设备上,然后测试它。

  1. 要做到这一点,首先要在您的设备上启用开发者模式。这通常可以在设置 | 关于手机中找到。在这里,您需要找到构建号并多次点击它。如果操作正确,您将收到一个提示,上面写着您现在是开发者(在某些设备或安卓版本中,构建号选项位于更多中)。完成后,将会有一个名为开发者选项的新部分可供您使用;打开它并启用USB 调试设置安卓设备

  2. 完成后,将您的设备连接到系统并让其安装驱动程序。您的设备现在已准备好进行测试。要检查是否已正确设置,在编辑器视口工具栏中点击启动旁边的小箭头,看看您的安卓设备是否列在设备下。如果是,那意味着它已经正确设置。一些设备不会自动安装驱动程序。在这种情况下,建议您从公司的网站上下载相应的驱动程序。设置安卓设备

  3. 设置好后,我们现在可以在我们的安卓设备上测试游戏。要这样做,点击设备下列出的安卓设备。一旦点击,UE4 将开始打包游戏并为设备部署。您可以在屏幕右下角看到一个弹出窗口。设置安卓设备

  4. 要停止构建过程,请点击取消按钮。要查看构建过程的输出日志,请点击显示输出日志,这将打开日志窗口,您可以看到正在执行的内容。如果发生错误,您还可以看到错误发生的位置。一旦构建过程结束,它将自动在您的设备上启动。.apk文件也将被安装。

打包项目

另一种打包游戏并在设备上测试的方法是首先打包游戏,将其导入设备,安装它,然后进行游戏。但首先,我们应该讨论一些关于打包和安卓打包的设置。

地图和模式设置

这些设置涉及最终游戏的地图(场景)和游戏模式。在编辑器中,点击编辑并选择项目设置。在项目设置的项目类别中,选择地图和模式

地图和模式设置

让我们来看看各个部分:

  • 默认地图:在这里,您可以设置编辑器在打开项目时应该打开哪个地图。您还可以设置游戏在运行时应该打开哪个地图。您需要更改的第一件事是我们创建的主菜单地图。要做到这一点,点击游戏默认地图旁边的向下箭头,并选择Main_Menu

  • 本地多人游戏:如果您的游戏支持本地多人游戏,您可以修改一些关于游戏是否应该有分屏的设置。如果是,您可以设置两个和三个玩家的布局应该是什么样子。

  • 默认模式:在这个部分,您可以设置游戏应该使用的默认游戏模式。游戏模式包括默认 Pawn类、HUD类、Controller类和Game State Class等内容。对于我们的游戏,我们将坚持使用MyGame

  • 游戏实例:在这里,您可以设置默认的游戏实例类

打包设置

在打包游戏时,您可以调整一些设置。要访问这些设置,首先转到编辑并打开项目设置窗口。一旦打开,在项目部分下点击打包

打包设置

在这里,你可以查看和调整与打包项目文件相关的一般设置。有两个部分:项目打包。在项目部分,你可以设置选项,比如打包项目的目录、构建配置是调试、开发还是发布,是否希望 UE4 每次构建时都从头开始构建整个项目,或者只构建修改过的文件和资源等等。

打包设置下,你可以设置诸如是否希望所有文件都打包到一个.pak文件中而不是许多单独的文件,是否希望这些.pak文件分块等等。点击向下的箭头将打开高级设置。

在这里,因为我们正在为分发打包游戏,请勾选用于分发复选框。

安卓应用程序设置

在前面的部分,我们谈到了一般的打包设置。现在我们将讨论特定于安卓应用程序的设置。这可以在项目设置中的平台部分找到。在这个部分,点击安卓以打开安卓应用程序设置。

安卓应用程序设置

在这里你会找到所有打包游戏所需的设置和属性。首先要做的是配置你的项目以适配安卓。如果你的项目没有配置,它会提示你这样做(自 4.7 版本以来,UE4 会自动为你创建androidmanifest.xml文件)。在做其他任何事情之前,请先配置好这个。这里有各种部分。它们是:

  • APK 打包:在这个部分,你可以找到选项,比如打开包含所有构建文件的文件夹,设置包的名称,设置版本号,游戏的默认方向等等。

  • 高级 APK 打包:这个部分包含更高级的打包选项,比如为.apk文件添加额外设置。

  • 构建:要调整构建部分的设置,你首先需要从 GitHub 获取源代码。在这里,你可以设置诸如是否希望构建支持 x86、OpenGL ES2 等等的选项。

  • 分发签名:这个部分涉及到给你的应用签名。在安卓上,所有应用都需要数字签名。这是为了让安卓能够识别应用的开发者。你可以点击部分顶部的超链接了解更多关于数字签名的信息。当你为你的应用生成密钥时,一定要把它保存在一个安全的地方,因为如果你丢失了它,你将无法在 Google Play 上修改或更新你的应用。

  • Google Play 服务:安卓应用通过 Google Play 商店下载。这个部分涉及到启用/禁用 Google Play 支持、设置你的应用 ID、Google Play 许可证密钥等等。

  • 图标:在这个部分,你可以设置你游戏的图标。你可以根据设备的屏幕密度设置各种尺寸的图标。你可以点击部分顶部的超链接获取更多关于图标的信息。

  • 数据烹饪器:最后,在这个部分,你可以设置游戏中音频的编码方式。

对于我们的游戏,你需要设置的第一件事是安卓包名,它在APK 打包部分找到。命名的格式是com.YourCompany.[PROJECT]。在这里,用公司的名字替换YourCompany,用你的项目名替换[PROJECT]

安卓应用程序设置

构建一个包

要打包你的项目,在编辑器中转到文件 | 打包项目 | 安卓

构建一个包

你会看到不同类型的格式来打包项目。它们如下:

  • ATC:如果你有一个配备高通骁龙处理器的设备,请使用这种格式。

  • DXT:如果你的设备有 Tegra 图形处理单元(GPU),请使用这种格式。

  • ETC1:您可以在任何设备上使用这种格式。但是,此格式不接受带有 alpha 通道的纹理。这些纹理将不被压缩,使您的游戏需要更多的空间。

  • ETC2:如果您有一台 MALI 设备,请使用这种格式。

  • PVRTC:如果你有一台搭载 PowerVR GPU 的设备,请使用这种格式。

一旦您决定使用哪种格式,点击它开始打包过程。将打开一个窗口,要求您指定要将包存储在哪个文件夹中。

构建包

一旦您决定在哪里存储包文件,点击确定,构建过程将开始。开始后,就像启动项目一样,屏幕右下角会弹出一个小窗口,通知用户构建过程已经开始。您可以打开输出日志并取消构建过程。

构建过程完成后,转到您设置的文件夹。

构建包

游戏中会找到一个.bat文件。假设你已经在 Android 类别的APK 打包部分的项目设置中勾选了.apk?选项(位于包装游戏数据内),你也会找到游戏的.apk文件。

.bat文件直接将游戏从系统安装到您的设备上。要这样做,首先将您的设备连接到系统。然后双击.bat文件。这将打开一个命令提示符窗口。

构建包

一旦打开,您无需做任何操作。只需等待安装过程完成。安装完成后,游戏将在您的设备上准备好执行。

要使用.apk文件,您需要以略有不同的方式进行操作。.apk文件在设备上安装游戏。为此,您需要执行以下步骤:

  1. 连接设备。

  2. 创建.apk文件的副本。

  3. 将其粘贴到设备的存储中。

  4. 从设备执行.apk文件。

安装过程将开始。完成后,您可以玩游戏。

开发者控制台

在谈论如何在 Google Play 商店上发布游戏之前,我们首先需要谈论一下开发者控制台,从那里您可以管理您的应用程序。这包括将应用程序上传到 Play 商店和从中删除,填写应用程序描述,设置应用程序价格等。但是,在您可以访问开发者控制台之前,您首先需要注册。注册费用为 25 美元。注册页面的链接是play.google.com/apps/publish/signup/

开发者控制台

注册后,转到开发者控制台页面。

开发者控制台

在这里,点击位于右上角的添加新应用程序按钮。单击后,将打开一个窗口,您可以在其中设置语言并将游戏名称设置为Bloques。设置完成后,点击上传 APK。点击后,您将看到有关应用程序的几个选项。

在顶部,您可以看到应用程序的名称 Bloques。在左侧下方是几个面板。在中间是相应面板中可用的设置或选项。

所有应用程序

这里显示了您已发布或正在发布的所有应用程序和/或游戏。

所有应用程序

尚未发布或正在上传到 Play 商店的应用程序将被保存为草稿。您还可以检查应用程序的下载/安装次数、价格、最后更新时间等信息。单击列出的任何应用程序将打开应用程序页面,在其中您可以为其设置各种属性和选项。

APK

APK面板默认打开。在这里,您可以选择是否要在 Play 商店上发布游戏。

APK

如果您正在开发应用或游戏,并希望在发布最终产品之前在市场上测试您的产品,并获得一些反馈,您可以通过从BETA 测试选项卡上传您的应用来设置一个测试版。如果您希望对您的应用进行更受控制的测试,例如只能在有邀请或密钥代码的情况下下载,那么您可以通过从ALPHA 测试选项卡上传您的产品来设置一个内测版。

商店列表

接下来是商店列表面板。该面板包含了与应用在 Google Play 中的显示方式相关的所有选项。

商店列表

在这里,您需要填写关于您的应用的详细信息。当用户点击应用时,这些详细信息将显示在 Play 商店中。该面板有五个部分。

第一部分是产品详细信息。在这里,您可以设置应用的名称,关于您的应用的简短描述(应该足够简短和有趣,以吸引用户的注意力),以及关于您的应用的完整描述(其中包含应用的完整描述、其功能集等)。

接下来是图形资产。在这里,您需要发布游戏的屏幕截图。由于有各种不同屏幕尺寸和分辨率的 Android 设备,您需要添加多个不同分辨率的屏幕截图,以便在任何设备上不会被拉伸或压缩。您需要至少添加两个屏幕截图;您可以添加的最大屏幕截图数量为八个。给出了各种设备的所需尺寸,因此您可以检查并相应地设置它们。除了添加屏幕截图,您还可以添加一个视频,可以是应用的预告片或游戏过程视频。

图形资产之后是分类面板。这涉及到您的应用将在 Play 商店中如何分类。在这里,您需要指定您的产品是应用还是游戏。设置完后,您需要指定您的产品属于哪个类别;如果您选择了应用程序,则在类别下您会得到图书和参考资料教育商业金融生活方式等选项。如果您选择了游戏,您将需要在棋盘游戏、益智游戏、休闲游戏等下设置其类型。最后,您还需要为您的应用设置内容评级

接下来是联系方式,您可以在其中发布您的网站或公司的网站、联系电子邮件地址和电话号码。

最后,在隐私政策部分,您需要为您的应用提供隐私政策。

内容评级

内容评级是任何游戏或应用的重要方面。Google Play 也提供了自己的内容评级。

内容评级

尽管商店列表中有一个内容评级部分,但这是一个更全面和广泛的评级系统。通过一个包含有关应用/游戏及其内容的各种问题的问卷调查,Google 将对您的产品进行评级。但是要获得问卷调查,您首先需要上传您的应用。

定价和分发

该部分包含了与您的应用成本以及您的应用将在哪里提供下载相关的一切。

定价和分发

在顶部,您可以设置您的应用是免费还是付费。如果您希望您的应用是付费的,您首先需要设置一个商户账户。

在下面是一个国家列表。您可以通过点击复选框选择您希望您的应用在哪个国家可用。如果您希望您的应用在全球范围内可用,请勾选选择所有国家,所有复选框都将被选中。

应用内产品

该部分包含有关应用内产品的设置。

应用内产品

开发人员使用的一种流行的货币化方法是应用内购买。这些是可以用真实货币购买的虚拟商品。在这里,您可以管理您的应用内产品,并设置价格、可购买的物品等。然而,如果您想在您的游戏或应用中进行应用内购买,您首先必须设置一个商户账户。

服务和 API

这是您可以看到 Google 提供的服务在您的应用/游戏中当前是否处于活动状态的地方。

服务和 API

这些服务包括 Google 云消息传递,您可以使用它将信息和数据从服务器发送到您的应用或游戏;许可证,它可以防止盗版和未经授权的产品分发,并用于验证应用内购买;以及 Google Play 服务,其中包括排行榜、成就、推送通知等等。

游戏服务

如前所述,Google 为应用开发人员提供各种服务。这是您可以设置您的应用/游戏上想要的服务的地方。

游戏服务

当您进入这个面板时,您会看到您制作的应用的列表,类似于所有应用面板中的列表。在这里,您可以查看您的应用或游戏在哪些平台上,您的游戏中有哪些成就,您的排行榜,以及有多少独特的玩家使用他们的 Google 账户登录到您的游戏。与所有应用一样,点击应用的名称将打开一个页面,在那里您可以选择关于这些服务的几个选项。

让我们分别讨论这些部分。

游戏详情

在这里,您可以设置有关您的应用/游戏的一般详情。

游戏详情

这些一般详情包括您应用的显示名称、描述、类别、图形资产等。您也可以在这里更改这些设置。

已链接的应用

要能够使用 Google 服务,您首先必须链接您的应用。

已链接的应用

链接您的应用将生成一个 OAuth2 密钥,您需要在应用的二进制文件中包含它,然后才能使用这些服务。在这里,您可以为您的应用选择不同的平台,即 Android、iOS、Web 等。点击其中任何一个将打开一个页面,在那里您必须填写某些细节,然后才能链接您的应用。我们将在后面的部分再回到这个问题。

事件

让用户下载您的应用是一回事。确保已下载您的应用或游戏的用户继续使用它们,换句话说用户留存,是一个完全不同的专业领域,同样重要,甚至更重要。接下来的三个面板就是为此而设的。第一个是活动面板。

活动

一旦您拥有了大量用户,您可以开始为参与或赢得活动的用户提供定期活动和奖励。活动可以包括每周比赛、游戏产品折扣等。这是保持用户参与游戏的好方法。要添加一个活动,点击添加活动,这将带您到活动页面,在那里您可以填写有关活动的详细信息。

成就

保留用户的另一种方法是创建成就。成就是玩家必须在游戏中执行的目标或任务,以解锁相应的成就。这可能包括像玩游戏X次数,杀死Y个敌人等。通常,当玩家解锁成就时,他们会获得一些游戏内货币或类似的东西作为奖励。成就非常适合保持完美主义者玩家,他们玩游戏以完成游戏。这意味着完成游戏(如果有结局的话),解锁所有可解锁的内容,并解锁游戏中的每个成就。这也是您的游戏的必要组成部分,因为您至少需要五个成就才能发布您的游戏。

成就

要添加一个成就,点击添加成就按钮,它会带你到成就详情页面。在这里,你可以设置所有成就的细节,比如成就的名称、如何解锁的描述、图标等等。

排行榜

最后,但同样重要的是排行榜。排行榜是另一种留住玩家的方式,尤其是那些为了获得最高分而竞争的玩家。排行榜是一种列表,显示了在你的游戏中得分最高的玩家的名字,按照降序排列。

排行榜

要添加一个排行榜,点击添加排行榜按钮,它会带你到排行榜详情页面。在这个页面上,你可以设置各种选项,比如名称、格式、排行榜的上限和下限等等。

测试

这个部分包含了关于在你的应用/游戏上测试 Google Play 服务的各种选项。在发布游戏之前,建议你先测试你的应用,以确保一切正常运行,如果出现问题,及时修复再发布。

测试

在这里,你可以看到服务是否准备好测试。如果没有,你将被告知在测试开始之前需要什么。你还可以通过点击添加测试人员按钮并输入他们各自的 Google 账户信息来邀请其他人测试你的应用/游戏。

发布

最后,还有发布部分。一旦你填写了所有细节,添加了截图,设置了 Google Play 服务,测试了它们并且确信你的产品已经准备好发布,你就可以发布它。

发布

在这里,你可以看到你的应用/游戏是否准备好发布。如果没有准备好,你可以看到缺少什么,以及在发布之前需要做什么。如果你的游戏已经发布,并且你想要将其从 Play 商店中移除,你可以通过点击删除你的游戏按钮来这样做。

报告

报告面板中,你可以查看评论、崩溃和 ANR统计等内容。

报告

这里也有各种部分,都包含不同的报告:

  • 崩溃和 ANR: 在这个部分,你可以查看与游戏崩溃和 ANR 相关的报告。游戏崩溃是经常发生的。即使你的游戏经过了良好的优化,仍然可能会出现一些意外问题,有些是小问题,有些是大问题。为了留住你的用户,你必须解决这些崩溃;否则,他们会感到沮丧并删除你的游戏。在这里,你可以查看你发布的所有游戏和应用的崩溃报告,并相应地进行调试。ANR 出现在你的应用在类似于 Windows 和 Mac 上收到的未响应提示的设备上停止响应时。这与崩溃不同,因为当游戏崩溃时,应用程序停止运行。当 ANR 发生时,应用程序仍在设备上运行,但不响应。解决这个问题同样重要。

  • 评论: 了解你的游戏或应用在市场上的表现如何的一个好方法就是阅读它的评论。这也是了解你的游戏或应用的不足之处的好方法。你可以在创建续集或计划开发更新时使用这些信息。你还可以获取关于游戏中存在的任何错误的信息,并利用这些知识来解决它们。

  • 统计: 这一部分显示了有多少人在玩游戏,你的游戏下载了多少次,你的游戏在哪里最受欢迎(地点),你的游戏有多少活跃用户等等。

  • 财务报告: 最后,还有财务报告部分,你可以在其中跟踪你的产品产生的收入,并据此更新你的游戏或应用。

设置

在这里,您可以查看和设置有关帐户详细信息、谁可以访问开发者控制台的权限等方面的各种选项。

设置

这里也有各种部分,每个部分都根据选项类型进行分类,如下所示:

  • 帐户详细信息:此部分包含有关您的开发者控制台帐户的所有常规选项,例如开发者姓名、地址、电子邮件 ID、网站 URL 等。

  • 用户帐户和权限:从这里,您可以设置谁可以访问您的开发者控制台。在团队中工作时,您可能希望所有人都能访问。您可以在此部分进行设置。

  • 活动日志:在这里,您可以查看您在开发者控制台中对应用程序所做的所有更改,以及特定更改的时间戳。这是跟踪应用程序所做的任何更改的好方法。

  • 电子邮件首选项:如果您希望或不希望通过电子邮件接收有关您的应用程序的警报,您可以在此处进行设置。

  • API 访问:API 是应用程序的重要方面。它允许您管理诸如应用内购买、认证交易等事项。但是,在您可以使用它们之前,您必须首先链接您的应用程序。您可以在API 访问部分链接您的应用程序。

  • AdWords 帐户:在这里,您可以将您的帐户链接到AdWords 帐户。AdWords 是 Google 提供的一项服务,它允许您通过使用先进的定位技术来推广您的应用程序,以确保正确的人看到您的应用程序或游戏的广告或促销。

警报

在设置部分,我们讨论了如何打开/关闭电子邮件警报。如果您已打开电子邮件警报,您将通过电子邮件接收有关应用程序的所有警报。如果您关闭了它,您可以在警报面板中查看这些警报。

警报

发布您的游戏

既然我们已经讨论了开发者控制台,我们可以继续将我们的游戏发布到 Google Play 商店。

激活 Google 服务

现在,由于应用程序超过 50 MB,您将需要使用 Google Play 服务,即 APK 扩展文件。转到游戏服务面板,然后转到游戏详细信息部分。在这里,填写所有字段,因为这些都是在您发布服务之前应用程序应具备的基本要求。这包括设置显示名称,您可以将其设置为Bloques。在描述部分,只需写出游戏是什么,游戏的目标等。

激活 Google 服务

由于这是一个益智游戏,在类别字段中选择益智。此外,由于我们不需要保存的游戏,您可以将其设置为关闭。对于图形资产,您将需要至少两个:一个用于图标,一个用于特色图形。截图所需的分辨率为512 x 512,特色图形所需的分辨率为1024 x 500。您可以拍摄高分辨率截图并在 Photoshop 中进行编辑以创建您的图像。

激活 Google 服务

一切都设置好后,单击屏幕顶部的保存

填写完详细信息后,转到已链接的应用程序,填写必填字段,然后在顶部单击继续。单击后,您将需要授权您的应用程序。单击立即授权您的应用程序按钮。这将打开一个菜单,要求您填写产品名称、标志等。但是,由于我们之前已经填写了这些详细信息,我们可以将其保留(除非您想进行任何更改)。单击继续。在我们继续之前,我们首先必须创建一个客户端 ID。要找出您的应用程序的客户端 ID 是什么,请按照以下步骤进行:

  1. 打开命令提示符。确保以管理员身份运行。

  2. 运行以下命令:

keystore –exportcert –alias androiddebugkey –keystore C:\Users\*Your Username*\.android\debug.keystore –list –v
  1. 当它要求密码时,输入默认密码:android

  2. 复制 SHA1 签名并粘贴到签名证书指纹(SHA1)字段中。

  3. 接下来,点击创建 ID,这将为您创建一个客户端 ID。

完成后,Google 将为您的游戏创建一个唯一的客户端 ID 以及一个应用程序 ID。

接下来我们需要的是成就。为了发布我们的游戏,我们需要至少五个成就。您需要一个成就的名称,描述以及与之配套的图标。您可以创建自己的成就,但目前有五个成就如下:

  • 第一次:这是玩家第一次玩游戏时

  • 掌握要领:这是玩家清理第二个房间时

  • 傀儡大师:这是玩家清理第三个房间时

  • 拼图大师:这是玩家清理第四个房间时

  • 上瘾:这是玩家玩游戏五次时

激活 Google 服务

您可以分配任意数量的积分。我们不需要排行榜,因为我们的游戏没有积分或分数。

为出货准备项目

现在我们需要回到引擎并在项目中定义一些设置。首先,我们需要设置我们将要进行的构建类型。要做到这一点,转到项目设置,在项目下,在打包部分,选中用于分发框。您会注意到构建配置选项将设置为Shipping并且该选项将被锁定。

为出货准备项目

接下来我们要做的是将一些值从开发者控制台复制到我们的项目中。转到项目设置 | 平台 | Android。首先,在APK 打包部分,取消选中将游戏数据打包在.apk 内?。由于我们的游戏超过 50 MB,我们无法直接上传.apk 文件。我们需要的是一个.obb文件,一个扩展文件,我们将除了.apk文件之外上传。取消此选项后,UE4 将自动创建一个.apk文件(小于 50 MB)以及一个.obb文件(扩展文件)。

为出货准备项目

接下来,转到分发签名。如果我们要为出货打包我们的游戏,这部分是必要的。我们需要的第一件事是创建一个keystore文件。密钥库文件是一个具有一组密钥的二进制文件。您可以将其视为用于在应用商店上识别和验证您的应用的数字签名。有各种方法可以创建密钥库:其中之一是使用命令提示符的帮助。因此,以管理员身份运行命令提示符并输入以下命令:


keytool –genkey –v –keystore -*name of your project*.keystore –alias *alias_name* -keyalg RSA – keysize 2048 –validity 10000

用 Bloques(或您认为合适的任何名称)替换*项目名称*,用 Game(或您认为合适的任何名称)替换*别名*

在输入命令后,您将被要求填写一些其他信息,例如密钥库的密码,您的姓名,您公司的信息等。填写完毕后,密钥库将被创建。找到它并将其放置在*项目目录*/Build/Android中。

完成后,返回到项目首选项,在分发签名下,在密钥库中,输入您创建的keystore文件的名称,以及扩展名(例如,如果密钥库的名称是 Bloques,则输入 Bloques.keystore)。然后,在密钥别名中,输入别名(Game)。最后,在密钥库密码密钥密码字段中,输入您在创建keystore文件时定义的密码。

为出货准备项目

接下来,转到Google Play 服务。这里要做的第一件事是检查启用 Google Play 支持。这将在游戏中启用 Google Play 服务。在游戏应用 ID字段中,填写您在开发者控制台中链接应用程序时获得的应用程序 ID。您可以在开发者控制台的游戏服务面板的已链接应用程序授权部分中找到此 ID。

为发货准备项目

接下来,我们需要 Google Play 许可密钥。这可以在开发者控制台所有应用程序面板的服务和 API许可和应用内结算部分中找到。

为发货准备项目

这一长串看似随机的字符是我们的许可密钥。复制整个内容并粘贴到Google Play 许可密钥部分。接下来,在成就地图中,填写您之前创建的成就的名称和 ID。

为发货准备项目

只需在此处复制并粘贴名称以及 ID。如果您有图标要添加,也可以在图标部分添加。现在我们已经准备好为分发打包我们的游戏。因此,在编辑器中,转到文件 | 打包项目 | Android,选择任何格式并打包游戏。

构建完成后,转到您设置用于存储包的文件夹。您将看到项目的.apk文件、.bat文件和.obb文件。我们只需要.apk.obb文件。

为发货准备项目

在 Play 商店上传游戏

最后一步是将包上传到 Play 商店并填写更多细节。返回开发者控制台,转到所有应用程序。在其中,转到APK。在这里,我们上传我们的.apk.obb文件。转到生产选项卡,然后单击上传 APK;然后选择.apk文件。上传完成后,我们需要上传扩展名或.obb文件。

在 Play 商店上传游戏

要上传.obb文件,请单击无扩展文件以打开下拉菜单,然后选择上传新文件。从那里,选择.obb文件。上传完成后,单击保存草稿

接下来要做的是填写商店列表部分中的各个部分。这与我们在游戏服务面板的游戏详情部分中填写的内容类似。您可以复制粘贴字段。这里还需要至少两张截图。

接下来,转到内容评级。在这里,一旦您上传了 APK,您将被要求填写一个问卷调查,这将正确评价您的应用程序。这些问题大多与您的游戏内容有关。填写并保存问卷。保存按钮位于底部。接下来,单击计算评级,它将为您的游戏生成适当的评级。一旦您看到您的评级,单击页面底部的应用评级

最后需要填写的是定价和分销表格。在这里,您需要指定希望游戏在哪些国家可用,并勾选阅读并同意有关出口法律的指南等。

现在您已经准备好发布您的应用程序。要这样做,请单击开发者控制台右上角的发布应用,您的应用程序将被添加到 Google Play 商店供全世界下载、玩耍和享受。

货币化方法

制作好游戏是一回事。然而,最重要的是您的游戏能够产生收入,因为毕竟,我们都有账单要支付。自从手机游戏出现以来,出现了几种货币化模型。以下是开发人员用来产生收入的四种最受欢迎和广泛使用的货币化模型:

  • 免费模式:这是一种广泛使用的商业模式,由《愤怒的小鸟》、《割绳子》等游戏所推广。在这里,你可以免费使用游戏的某些功能,而其他功能被锁定,需要付费解锁。这种模式的主要目标是尽可能吸引更多的人,并让他们预览应用程序及其功能,而不会透露太多,以便用户对购买整个应用程序产生足够的兴趣。这类似于 PC 和游戏机的演示版本。

使用这种模式的优势是用户可以在购买之前尝试产品,这样他们更有可能在以后购买应用程序。这也是建立大型用户群的简单方法,因为应用程序没有前期收费,人们喜欢免费的东西。

另一方面,使用这种模式的一些缺点是,如果你提供的功能太少,用户将不会对购买整个产品产生足够的兴趣。另一方面,如果你提供的功能太多,用户将没有足够的理由购买整个产品。

  • 应用内广告:另一种流行的商业模式是为用户完全免费提供产品。开发者通过应用内广告赚取收入。你可能见过这样的应用。游戏或应用程序是免费下载的,屏幕顶部或底部有广告横幅。

使用这种模式的优势是,你完全消除了用户和应用程序提供的功能之间的任何付费壁垒,使其更具吸引力。你还可以根据用户的行为收集数据,并将其用于定向广告。

然而,使用这种模式意味着牺牲已经有限的屏幕空间来放置广告,这意味着牺牲用户体验。另一件事要记住的是,人们可能会因为广告而感到烦恼,这可能导致他们停止使用或卸载应用。因此要小心如何以及何时使用它们。

  • 付费应用程序:顾名思义,在这种模式下,应用程序不是免费的;用户必须购买应用程序才能使用。使用这种模式的优势是,你可以从每次下载中获得前期收入,以及更好的用户留存率(因为他们付费下载应用程序,他们更有可能频繁使用)。然而,除非你在应用市场有良好的声誉,否则很难说服用户为你的产品提前付费。这也意味着用户会对你的产品有很高的期望。

  • 应用内购买:这种模式由《糖果传奇》、《部落冲突》等游戏所推广,与免费模式类似,产品是免费提供的。然而,在这种情况下,用户在购买之前不会被限制使用任何功能。相反,他们从一开始就可以使用所有功能。开发者赚取收入的方式是通过应用内购买。这些是虚拟商品,如生命、能量增强、虚拟货币等。使用这种模式的优势是它增加了用户参与度,因此也增加了用户留存率。另一件事是,它的风险水平较低,因为它不需要太多的投资。然而,要记住不要过度使用这种模式。开发者犯的一个致命错误是构建一个几乎无法玩的游戏,除非用户付费。

移动性能和优化

每个开发者都希望通过各种类型的后期处理、复杂的着色器、照明等使他们的游戏变得漂亮而美丽。虽然在 PC/游戏机上制作游戏时这是完全可以的,但你必须记住移动平台有一定的技术限制,这可能会导致你的游戏性能不佳,从而导致销售不佳。以下是一些关于如何优化游戏以实现最佳性能的技巧和窍门。

  • 整个场景的绘制调用应该少于 700 次,以实现最佳性能。

  • 尽管动态光线使游戏看起来很好,但在技术上也很重。因此,除非绝对需要,避免使用动态光线。此外,建议在将游戏移植到设备上之前构建照明。

  • 整个场景的三角形数量理想情况下应为 500,000 或更少。

  • 除非绝对需要,您应该关闭移动高清晰度渲染HDR)。这会关闭照明功能,并大大提高移动性能。

  • 同样,除非需要,您应该关闭后期处理功能以获得更好的性能。

  • 在纹理方面,为了防止内存浪费,它们的分辨率应为 2 的幂(256 x 256,512 x 512,1024 x 1024 等)。

您可以在项目设置中的引擎类别下的渲染部分中设置一些渲染选项。

移动性能和优化

您可以从这里打开/关闭不同的功能,如照明,后期处理,纹理等,包括上述的最后两点。

在性能方面,您首先应该了解一些性能层次。它们都与游戏中的照明功能有关。在为移动设备开发游戏时,根据您的要求和目标平台,您应该牢记这些:

  • 低动态范围LDR):这种模式具有最高的性能,对内存和处理器的负荷最小。这种模式适用于不需要照明特性和/或后期处理的游戏。

  • 基本照明:在性能方面,这是下一个最佳模式。在这种模式下,您可以访问 UE4 提供的基本照明功能,如全局照明,材质着色等。

  • 全高动态范围照明:这种模式位于光谱的另一端。它的性能最低,对内存和处理器的负荷最高。在这种模式下,您可以利用 UE4 提供的大多数照明和后期处理功能。不建议在移动游戏中使用。

提示

建议您访问wiki.unrealengine.com/Android_Device_Compatibility。这是一个社区驱动的页面,社区的各种成员使用不同的照明模式在各种基于 Android 的设备上测试了 UE4。在为 Android 开发游戏时,这非常有帮助。如果您已经在未列出的设备上测试了 UE4,您可以自行发布,以造福其他社区成员。

总结

在本章中,我们讨论了 UMG 及其用户界面。使用它,我们为游戏创建了一个主菜单(其中包含游戏的名称和一个按钮,玩家触摸按钮后游戏开始)。做到这一点后,我们就准备好为 Android 设备打包我们的游戏了。

这样做的第一步是安装包含打包游戏所需的所有构建文件的 Android SDK。安装完成后,下一步是指定引擎文件的位置。然后,我们讨论了如何设置 Android 设备以直接测试游戏,而无需每次都打包游戏。最后,我们讨论了如何打包最终产品并将游戏上传到 Google Play 商店供用户下载。

本章以有关少数被移动游戏开发者广泛使用的盈利模式的细节结束,以及有关如何为移动设备正确优化游戏的一些建议。

您现在已经掌握了开始制作您梦寐以求的游戏所需的一切知识。从现在开始,您在 UE4 上变得更好的唯一方法就是练习。

附录 A. 接下来做什么?

在本书中,我们涵盖了一系列主题,比如如何下载和安装 UE4,如何创建项目,如何创建材料,从其他项目中添加/导入/迁移资产,使用蓝图进行脚本编写等等。希望到目前为止,您已经了解足够多关于 UE4 的知识,可以开始使用了。下一步是将您所学到的知识付诸实践。

学习

我们在第一章中简要介绍了 UE4 启动器中的学习部分。让我们再多谈一些。

Learn

该面板包含了涵盖各种主题的教程,包括如何创建材料、蓝图等。这里提供的教程以以下各种格式提供。

  • 视频教程:首先,Epic 提供了视频教程。要访问它们,点击页面顶部的视频教程按钮,它会带您到虚幻网站。Learn

在这里,您可以找到各种视频教程系列,都被整齐地分类以方便您查找。如果您向下滚动页面,您会找到浏览部分,列出了所有主题以及每个主题的视频系列数量。点击任何主题,您将看到为该特定主题提供的所有教程系列。

  • 文档:然后是 Epic 的官方文档。要访问它,点击文档超链接,它会带您到 Epic 的官方文档页面。Learn

文档页面,就像视频教程页面一样,包含了各种主题的教程,但它们更深入,涵盖了更多的主题。左侧是导航面板。所有主题都在那里列出。点击任何带有+标志的主题会展开更多子主题,您可以从中选择您想要了解的内容。当您点击一个主题时,它会在屏幕的右侧打开。

注意

如果您习惯在 Unity 上制作游戏,并想转到 Unreal 4,Epic 提供了一份文档,比较了两个引擎的视口、术语等,以便您可以将您的技能从 Unity 转换到 Unreal 4。您可以在拓宽您的视野部分找到它

  • 虚幻百科:虚幻百科可通过顶部的百科超链接访问,是 UE4 的官方百科页面,由社区制作,并由他们不断更新。Learn

在这里,您可以找到由社区创建的教程、插件、代码和游戏,以帮助您发展技能。您还可以将自己的内容或教程提交到百科页面供他人查看。最后,您可以看到人们正在使用 UE4 开发的游戏列表。您也可以提交您的游戏以获得一些宣传。

  • 引擎特性示例:此部分包含项目文件,每个文件都包含 UE4 提供的一个或多个特性。Learn

例如,有一个项目展示了 Matinee,然后有一个项目演示了 UE4 提供的地形工具,等等。一旦您选择并下载了一个项目文件,您可以打开并查看它。与该特性相关的所有内容都已为您设置好,您可以亲自看看它们是如何工作的,如何连接起来等等。这也是获取资产(材料、纹理、蓝图类等)的好方法,可以用于您自己的项目。

注意

强烈建议您下载内容示例项目。该项目文件包含了 UE4 提供的各种特性,以博物馆的方式展示在不同的关卡中。例如,有一个关卡展示了材质编辑器及其功能,还有一个关卡演示了动画特性等等。

  • 游戏内容示例:这个部分包含了展示功能的项目文件,类似于引擎功能示例中的内容,但更专注于游戏。学习

这些项目大多包含蓝图,每个蓝图都包含游戏中通常找到的机制或功能。它们提供了框架,您可以用来构建游戏。例如,您可以找到一个包含回合制机制设置的项目文件,还有一个演示库存 UI 的项目,等等。

  • 示例游戏项目:这个部分类似于游戏内容示例部分,唯一的区别在于这个部分包含了已经设置好的示例游戏的项目文件。学习

示例游戏项目提供了资产和设置好的关卡供您探索、学习和利用。您可以选择各种类型的游戏,例如 2D 平台游戏、3D 平台游戏、FPS 等等。

  • 社区贡献:这个部分还包含了一些带有示例游戏和环境的项目文件,但与其他部分的项目文件不同,这里的内容是由社区创建的,由 Epic 精心挑选的。学习

在撰写本文时,这个部分只包含两个项目文件,即 Radial Impact,演示了保存菜单等内容,以及 SciFi Bunker,展示了 UE4 的渲染技术。

  • 平台和合作伙伴:最后,还有平台和合作伙伴部分,其中包含了 UE4 当前支持的技术和外围设备的示例项目。学习

在撰写本文时,只有一个 Leap Motion 的示例项目可用。单击缩略图将带您到官方页面,在那里您可以下载并尝试 Leap Motion 的实验。

AnswerHub

AnswerHub,另一个在第一章中简要介绍的话题,Unreal 4 入门,是一个您可以发布关于您遇到问题的特定主题的问题,或者如果您需要帮助的话。单击启动客户端左下角的AnswerHub超链接将带您到 AnswerHub 页面。

AnswerHub

在首页,您可以看到其他成员发布的问题列表。现在,您遇到的问题很可能并不是独一无二的。因此,在发布问题之前,建议您首先在 AnswerHub 上搜索相同或类似的问题。只有当您找不到合适的解决方案或任何解决方案时,才应该发布问题。

要发布问题,请单击页面右上角的发布问题按钮,这将带您到提问页面。

AnswerHub

您把问题放在最上面。确保问题清晰、简洁,并以一种读者能够在阅读后得到一个概念的方式进行书写。在下面,您可以选择问题所涉及的部分。例如,如果您在打包游戏时遇到困难,那么在这个部分,您应该选择打包和部署,等等。

在下面,您可以详细描述您的问题。这是您详细阐述您发布的问题的地方。再次强调,尽量保持简洁、清晰,如果可能的话,发布截图、日志文件等,以便其他人更容易理解您的问题。

最后,您需要给您的问题设置标签。标签可以让用户更容易搜索问题。当您搜索问题时,搜索引擎会将您写的内容与标签进行比较,因此请确保您正确地给问题打上标签。

帮助他人总是件好事。因此,如果你觉得自己可以帮助有问题的人,你应该通过回答其他成员发布的问题来帮助他/她。这是与社区互动的好方法,你也可能在这个过程中学到一些新东西。这也是建立你的声望分的好方法。如果你在 AnswerHub 上非常活跃,而且你的答案很有用,你会得到点赞,从而增加你的声望分(有点像 Reddit)。

论坛

最后,我们有我们老牌的论坛。在引擎启动器上点击论坛超链接将带你到论坛页面。

论坛

论坛被整齐地分类,基于各种话题,这样你就更容易找到相关的帖子进行发表。各个部分如下:

  • 虚幻引擎:这里发布了与 UE4 相关的所有话题,比如最新公告、更新、市场等等。

  • 开发讨论:这个部分包含与在 UE4 中开发游戏或其他项目相关的话题。这些话题涵盖了诸如渲染、动画、内容创建、建筑可视化等内容,以及更多技术性的话题,比如 C++编程、Android 开发、iOS 开发等等。

  • 社区:这是你可以更直接地与社区互动的地方。例如,如果你有兴趣制作游戏或产品,但缺乏人才,或者如果你有兴趣加入一个团队制作游戏,你可以去有技能?寻找人才?部分,发表你的需求或个人资料,希望得到一些回应。另外,如果你已经在做一个项目,并且想要得到一些反馈,你可以在进行中的工作部分发表,从其他社区成员那里得到一些建设性的反馈。这也是让你的游戏被注意到的好方法。

  • 学校的 UE4:这个部分包含与学术相关的话题和讨论帖。在这里,导师们可以讨论课程设置以及如何教授 UE4 给学生,并给其他教育工作者提供反馈。如果你是学生,你可以与其他同学讨论 UE4,并得到一些支持。

  • 国际:最后,如果你有兴趣与你附近的社区成员互动,你可以在相关的子版块中发表讨论帖。例如,如果你想制作一个游戏,但希望你的团队成员附近,你可以发表相关主题。

总结

在这里,我们看了一下你可以学习和提升你在阅读本指南后所获得的 UE4 技能的各种方式。

好消息是,UE4 本身拥有大量的教程,几乎以各种格式提供,无论是书面的、视频的、项目文件、直播等等。仅仅通过阅读这些教程,你就可以学到很多关于引擎的知识。

如果你仍然需要关于特定方面或功能的帮助,或者你有一个似乎无法解决的问题,或者只是需要一些帮助,你总是可以在 AnswerHub 上发帖,让其他社区成员和/或 Epic 工作人员来解决。另外,如果你发现其他社区成员发布了一个问题,你认为自己知道答案,为什么不伸出援手呢?这将提高你的声望并保持社区的活跃。

最后,还有论坛,你也可以在这里寻求帮助,讨论最新的更新和市场新增内容,展示你的作品并获得一些反馈,给予他人作品的反馈,招募人才,或者加入一个团队等等。

posted @ 2024-05-22 15:09  绝不原创的飞龙  阅读(19)  评论(0编辑  收藏  举报