UE安卓游戏开发学习手册全绝不原创的飞龙

第一个虚幻引擎于1998年由EpicGames推出。这个引擎的一个很棒的特性是,由于UnrealScript的存在,引擎在社区中变得非常受欢迎,因为它使得修改变得非常容易和可访问。然后,在2002年,Epic发布了他们的下一个引擎,虚幻引擎2,这是对第一个引擎的巨大改进。它带来了一个叫做UnrealEd2(后来是UnrealEd3)的东西,这本质上是一个您可以用来为虚幻创建关卡的关卡编辑器。这个编辑器,再加上UnrealScript,可以用来创建全新的游戏。该引擎提供了比其前身更好的渲染、物理和碰撞。它还支持当时的主机,即PlayStation2,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上为各种平台开发游戏,包括XboxOne,PlayStation4(包括ProjectMorpheus),WindowsPC,Linux,MacOSX,HTML5,iOS和Android。它还支持OculusRift。

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

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

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

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

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

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

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

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

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

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

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

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

为了阅读本书,您需要:

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

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

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

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

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

keytool–genkey–v–keystore-*nameofyourproject*.keystore–alias*alias_name*-keyalgRSA–keysize2048–validity10000新术语和重要单词以粗体显示。您在屏幕上看到的单词,例如菜单或对话框中的单词,会以这样的方式出现在文本中:"从主页,点击屏幕右侧的获取虚幻按钮。".

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

正如名称所示,这里是您可以找到有关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链接包含指向不同网页的超链接。

让我们仔细看看每一个:

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

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

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

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

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

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

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

我们将涵盖以下主题:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

\

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

从左到右,你有:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

走廊的天花板尺寸为1202x1544x64,房间的天花板尺寸为4096x2056x64。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第一种方法是通过ContentBrowser:

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

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

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

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

如果现在返回到Blockmania项目,您将看到ContentBrowser中的Materials子文件夹中显示了M_Basic_Floor和M_Basic_Wall。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在坑上方和附近放置NavMeshBoundsVolume,与开关的基座相对。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最常用的操作解释如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

从左到右,图标如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

接下来我们需要在游戏中编写Matinee。在第三个房间有四个基座。从左到右,第一个激活AI角色,第二个绘制桥梁的第一部分,第三个绘制第二部分,第四个绘制第三部分。因此,打开关卡蓝图,就像在第二个房间的大门一样,编写蓝图,使得当玩家靠近开关并触摸屏幕时,Matinee会播放。对于所有三个触发盒,都要这样做,播放它们各自的Matinee。

当AI角色掉进坑时,我们希望桥的部分回到坑的底部,这样当玩家重新开始时,他们必须再次按下开关来绘制部分。返回到将AI角色传送回起始位置的触发盒。对于Sequence节点,添加一个引脚,为所有三个Matinee演员创建一个引用。创建一个Reverse节点,并将所有三个演员连接到它。

现在,如果AI角色掉进坑里,除了被传送回起始位置,桥梁的部分也会重置到它们的原始位置。

我们已经设置好了谜题。然而,目前这个谜题没有回报。我们之前提到,当AI角色穿过坑时,它会解锁关键方块。但现在,我们的关键方块似乎没有被锁住。我们可以把关键方块囚禁起来,当AI角色成功穿过坑时打开。为此,在关键方块周围放置四个立方体(作为囚笼的墙壁),创建它们打开的Matinee,并设置一个触发盒,当AI角色重叠触发盒时,播放Matinee。因此,在关键方块周围放置四个立方体,将其围住,并将门的材质应用于它们(如果愿意,可以复制Door_Material,并在材质编辑器中删除与Refraction表达式的连接,并将其应用于墙壁,以便从坑的另一侧正确看到关键方块)。在放置这些时,确保关键方块周围的触发盒也被墙壁包围。

现在我们有四个独立的动画对象,它们使用相同的Matinee演员。剩下的事情就是为触发框设置重叠事件,以播放Matinee。

根据你所学到的知识,在制作第四个房间的桥梁时,应用相同的方法,确保AI角色在桥梁被绘制时可以穿过它们。

在本章中,我们介绍了虚幻Matinee:它是什么,它的用户界面,以及可以用它做什么。我们使用它来创建过场动画并对门和桥进行动画。通过这样,我们完成了我们的小游戏,展示了UE4提供的各种功能和工具。下一步是完成游戏(添加主菜单,完善游戏等),将其打包成一个.apk文件,将其移植到Android设备上,并在那里进行测试。

在过去的几章中,我们一点一点地构建了一个游戏。我们首先使用BSP刷子构建了世界,添加了灯光和静态网格,创建了材质并将其应用于网格。然后,我们添加了各种类和体积,这些都是开发游戏和增强游戏玩法所需的。在添加了所有角色之后,我们开始使用蓝图、级别蓝图和蓝图类来编写游戏。最后,我们利用Matinee创建了过场动画和动画。

我们现在有一个运行良好的游戏。下一步是完成游戏,将其打包成.apk文件,并将其发布到GooglePlay商店。

如果您玩过任何类型的游戏,您会发现它们都有一个主菜单。让我们也为我们的游戏添加一个。我们的主菜单将非常简单。我们将在中心放置游戏的名称。当玩家点击名称下方时,游戏将加载。游戏的菜单、UI、抬头显示(HUD)等及其功能可以使用虚幻动态图形(UMG)轻松创建。UMG是一个易于使用的工具,具有简单直观的编辑器,您可以快速学会使用它来制作游戏的菜单等。

要访问UMG编辑器并制作用户界面,您首先需要创建一个WidgetBlueprint类。在内容浏览器中右键单击,在用户界面下选择WidgetBlueprint。将其命名为Main_Menu,然后双击它以打开UMG编辑器。

UMG编辑器

选项卡栏显示当前打开的选项卡。您可以从这里切换、关闭、重新排列和移动任何选项卡。

菜单栏是您可以找到您将使用的操作的地方:

在菜单栏下方是工具栏。这里列出了所有最常用的操作。

UMG编辑器中有两个窗口:设计师和图形。设计师窗口是您打开小部件类时看到的窗口。这是您设计用户界面的地方。这包括添加UI元素,在图形编辑器中排列它们,设置它们的属性等等。另一个窗口是图形窗口,看起来像级别蓝图窗口。这是您为用户界面进行所有视觉脚本编写的地方。

所有菜单都具有与任何其他蓝图窗口中找到的相同操作。

屏幕中央是图形编辑器。在这里,您可以制作和设计您的用户界面。

在中心,您可以看到一个虚线矩形。这被称为画布,它代表游戏屏幕。您想要放在小部件中的所有UI元素都在这里。这显示了元素将在哪里,它们将在屏幕上的外观以及它们将在游戏屏幕上排列的位置。

在图形编辑器的左下角,您可以看到屏幕的分辨率。在屏幕的右下角是显示每英寸点数(DPI)比例的地方。您可以通过单击其旁边的齿轮图标来更改此比例。

在左上角,您可以看到缩放比例。最后,在右上角有一些按钮。从左到右,它们已列出如下:

详细信息面板是您可以设置所选组件的属性的地方。

在这里,您可以设置诸如小部件的转换和枢轴、在按下或悬停在小部件上时添加事件、设置可见性等属性。

有各种小部件元素可用于创建UI。您可以在Palette面板中找到它们。只需从面板中拖放所需的内容到图形编辑器中以添加该元素。

小部件组件分为四个组,即常用、输入、面板和基本元素:

层次面板显示了小部件的所有组件的层次结构。

顶部是CanvasPanel,它充当UI的基础。每当您添加一个组件,它也会被添加到层次结构中。如果您将一个组件拖放到层次面板中的小部件组件上,它将作为父级添加到其中,并且您添加的组件将作为子级添加。它们还会在图形编辑器中连接在一起。

UMG用户界面中的最终组件是位于窗口底部的动画面板。

UMG允许用户创建动画。您可以对小部件组件进行动画处理以满足您的偏好。动画面板的工作方式几乎与虚幻Matinee相同。左侧是轨道面板。这是您可以添加、删除或移动动画轨道的地方。要添加动画轨道,请单击+新建按钮。

创建主菜单的第一步是创建一个新的关卡。在编辑器中,单击文件,然后选择新建关卡。当关卡类型窗口打开时,选择空关卡。

将此关卡命名为Main_Menu。创建后,在内容浏览器中打开Main_Menu小部件类。在UMG编辑器中,向画布添加一个文本小部件。使文本变大。首先,将文本槽面板的大小增加到1300x200。有两种方法可以做到这一点:第一种方法是单击边缘并拖动以增加大小。第二种方法是在详细信息面板中,您可以将大小X设置为1000,将大小Y设置为250。

文本槽现在已设置。但是,文本本身的实际大小相当小。我们需要做的下一件事是增加文本的大小。同样,在详细信息面板下,在外观部分,您将找到字体选项。在最右边,您可以设置字体大小的值。默认情况下,此值设置为24。将其增加到150。

这是我们将显示游戏名称的地方。在内容部分,您可以设置要在屏幕上打印的文本。无论您写什么都会显示在图形编辑器中。删除文本块,并写上游戏的名称:Bloques。最后,调整文本面板的位置,使名称出现在屏幕中央。

我们要添加的下一件事是一个按钮,当玩家点击时,游戏开始。为此,在调色板面板的常用部分中添加一个按钮小部件。将其放置在游戏名称下方的中央位置。将其尺寸设置为256x64。我们还需要一些文本放在按钮上,因此从调色板面板拖动一个文本组件并将其放在按钮上。文本将附加到按钮小部件上。您可以在层次结构面板中看到文本小部件作为组件位于按钮小部件下方。无论您移动按钮小部件,文本小部件都会随之移动。将字体的颜色从白色更改为蓝色,以便清晰可见。

我们已经放置了按钮,但它什么也没做。我们需要编写其功能。选择按钮后,转到详细信息面板,在事件部分下,单击OnClicked旁边的按钮。窗口将切换到图形窗口,OnClicked按钮事件节点已经设置好。

对于这个节点,我们将附加一个OpenLevel节点。右键单击并通过在搜索栏中输入来搜索它并将其连接到OnClicked节点。在关卡名称输入中,写入您想要打开的关卡的名称,我们的情况下是Bloques_Game。确保正确复制关卡的名称;否则,它将无法打开。

最后,我们还需要移除小部件;否则,当关卡加载时,它仍然会存在。右键单击并选择从父级中移除节点,并将其连接到打开关卡节点的输出引脚。

就是这样。通过蓝图加载关卡真的是如此简单。

我们已经设置好了我们的主菜单。我们需要将其实现到我们的场景中。为此,打开关卡蓝图。在我们能够显示小部件之前,我们首先需要创建它。在事件开始播放部分,右键单击并输入createwidget以找到创建小部件节点并连接它们。接下来,在类输入中,单击下拉菜单并选择Main_Menu。

当级别开始时,Main_Menu小部件将被创建。创建后,我们需要将其添加到视口,以便玩家可以看到它。为此,我们需要一个添加到视口节点。将返回值拖出并释放到图形编辑器的任何位置。当菜单打开时,键入添加到视口,找到它,并添加它。

如果您要测试游戏,您会发现一旦运行游戏,游戏名称和按钮会出现在屏幕上。

然而,还有一些事情我们可以改进。首先,我们可以隐藏虚拟摇杆,因为它们不是必需的。

在图形编辑器的任何位置右键单击;关闭上下文敏感;找到设置虚拟摇杆可见性节点;将其添加到图形编辑器;并将其连接到添加到视口节点。对于目标输入,您需要创建一个获取玩家控制器并将其附加到目标输入引脚。

现在运行游戏。虚拟摇杆在运行时将不可见。

创建主菜单

如果您按下按钮,它将加载并带您进入游戏,一旦级别加载完成,UI将消失。这就是如何将主菜单添加到您的游戏中。

在我们可以打包游戏之前,我们首先需要安装AndroidSDK。幸运的是,您不需要在互联网上找到并下载它;它的安装文件可以在UE4\的<位置>\UnrealEngine\4.7\Engine\Extras\Android中找到。我们需要的文件是tadp-2.0r8-windows。

找到它后,双击运行安装。一旦设置打开,您只需要按照屏幕上的说明进行操作,让它安装。

需要注意的一点是,设置需要互联网连接,因为它会下载构建工具;因此,请确保在安装SDK工具时连接到互联网。

一旦您成功安装了AndroidSDK文件,下一步需要做的是告诉引擎所有文件的位置(特别是如果您将SDK文件安装在默认位置之外的其他位置)。为此,您首先需要打开项目设置(可以在编辑下的视口菜单栏中找到)。在项目设置窗口的平台部分下,选择AndroidSDK。

在这里,您可以告诉引擎所有文件夹的位置。左侧是构建Android所需的所有文件的列表。右侧的面板是设置相应文件目录的地方。有两种方法可以更改这个。您可以在面板中手动输入文件夹的位置,或者单击面板旁边的…。单击它时,浏览文件夹窗口会打开,您可以在其中指定文件夹。

您可以有不同的文件夹名称;您只需要确保当前分配了适当的文件夹。

接下来的两个选项是指定要使用的SDK和NDK工具的版本。AndroidSDK文件现在已经安装并设置好了。接下来要做的是为测试设置您的Android设备。

在开发游戏时,您自然会想要不时地测试游戏,看看它在设备上是否运行顺畅。您可以选择直接在安卓设备上构建和运行游戏,而不是首先打包游戏,将其放在设备上,然后测试它。

另一种打包游戏并在设备上测试的方法是首先打包游戏,将其导入设备,安装它,然后进行游戏。但首先,我们应该讨论一些关于打包和安卓打包的设置。

这些设置涉及最终游戏的地图(场景)和游戏模式。在编辑器中,点击编辑并选择项目设置。在项目设置的项目类别中,选择地图和模式。

让我们来看看各个部分:

在打包游戏时,您可以调整一些设置。要访问这些设置,首先转到编辑并打开项目设置窗口。一旦打开,在项目部分下点击打包。

在打包设置下,你可以设置诸如是否希望所有文件都打包到一个.pak文件中而不是许多单独的文件,是否希望这些.pak文件分块等等。点击向下的箭头将打开高级设置。

在这里,因为我们正在为分发打包游戏,请勾选用于分发复选框。

在前面的部分,我们谈到了一般的打包设置。现在我们将讨论特定于安卓应用程序的设置。这可以在项目设置中的平台部分找到。在这个部分,点击安卓以打开安卓应用程序设置。

在这里你会找到所有打包游戏所需的设置和属性。首先要做的是配置你的项目以适配安卓。如果你的项目没有配置,它会提示你这样做(自4.7版本以来,UE4会自动为你创建androidmanifest.xml文件)。在做其他任何事情之前,请先配置好这个。这里有各种部分。它们是:

对于我们的游戏,你需要设置的第一件事是安卓包名,它在APK打包部分找到。命名的格式是com.YourCompany.[PROJECT]。在这里,用公司的名字替换YourCompany,用你的项目名替换[PROJECT]。

要打包你的项目,在编辑器中转到文件|打包项目|安卓。

你会看到不同类型的格式来打包项目。它们如下:

一旦您决定使用哪种格式,点击它开始打包过程。将打开一个窗口,要求您指定要将包存储在哪个文件夹中。

一旦您决定在哪里存储包文件,点击确定,构建过程将开始。开始后,就像启动项目一样,屏幕右下角会弹出一个小窗口,通知用户构建过程已经开始。您可以打开输出日志并取消构建过程。

构建过程完成后,转到您设置的文件夹。

游戏中会找到一个.bat文件。假设你已经在Android类别的APK打包部分的项目设置中勾选了.apk选项(位于包装游戏数据内),你也会找到游戏的.apk文件。

.bat文件直接将游戏从系统安装到您的设备上。要这样做,首先将您的设备连接到系统。然后双击.bat文件。这将打开一个命令提示符窗口。

一旦打开,您无需做任何操作。只需等待安装过程完成。安装完成后,游戏将在您的设备上准备好执行。

要使用.apk文件,您需要以略有不同的方式进行操作。.apk文件在设备上安装游戏。为此,您需要执行以下步骤:

安装过程将开始。完成后,您可以玩游戏。

注册后,转到开发者控制台页面。

在这里,点击位于右上角的添加新应用程序按钮。单击后,将打开一个窗口,您可以在其中设置语言并将游戏名称设置为Bloques。设置完成后,点击上传APK。点击后,您将看到有关应用程序的几个选项。

在顶部,您可以看到应用程序的名称Bloques。在左侧下方是几个面板。在中间是相应面板中可用的设置或选项。

这里显示了您已发布或正在发布的所有应用程序和/或游戏。

APK面板默认打开。在这里,您可以选择是否要在Play商店上发布游戏。

如果您正在开发应用或游戏,并希望在发布最终产品之前在市场上测试您的产品,并获得一些反馈,您可以通过从BETA测试选项卡上传您的应用来设置一个测试版。如果您希望对您的应用进行更受控制的测试,例如只能在有邀请或密钥代码的情况下下载,那么您可以通过从ALPHA测试选项卡上传您的产品来设置一个内测版。

在这里,您需要填写关于您的应用的详细信息。当用户点击应用时,这些详细信息将显示在Play商店中。该面板有五个部分。

第一部分是产品详细信息。在这里,您可以设置应用的名称,关于您的应用的简短描述(应该足够简短和有趣,以吸引用户的注意力),以及关于您的应用的完整描述(其中包含应用的完整描述、其功能集等)。

接下来是图形资产。在这里,您需要发布游戏的屏幕截图。由于有各种不同屏幕尺寸和分辨率的Android设备,您需要添加多个不同分辨率的屏幕截图,以便在任何设备上不会被拉伸或压缩。您需要至少添加两个屏幕截图;您可以添加的最大屏幕截图数量为八个。给出了各种设备的所需尺寸,因此您可以检查并相应地设置它们。除了添加屏幕截图,您还可以添加一个视频,可以是应用的预告片或游戏过程视频。

在图形资产之后是分类面板。这涉及到您的应用将在Play商店中如何分类。在这里,您需要指定您的产品是应用还是游戏。设置完后,您需要指定您的产品属于哪个类别;如果您选择了应用程序,则在类别下您会得到图书和参考资料、教育、商业、金融、生活方式等选项。如果您选择了游戏,您将需要在棋盘游戏、益智游戏、休闲游戏等下设置其类型。最后,您还需要为您的应用设置内容评级。

最后,在隐私政策部分,您需要为您的应用提供隐私政策。

内容评级是任何游戏或应用的重要方面。GooglePlay也提供了自己的内容评级。

尽管商店列表中有一个内容评级部分,但这是一个更全面和广泛的评级系统。通过一个包含有关应用/游戏及其内容的各种问题的问卷调查,Google将对您的产品进行评级。但是要获得问卷调查,您首先需要上传您的应用。

在顶部,您可以设置您的应用是免费还是付费。如果您希望您的应用是付费的,您首先需要设置一个商户账户。

在下面是一个国家列表。您可以通过点击复选框选择您希望您的应用在哪个国家可用。如果您希望您的应用在全球范围内可用,请勾选选择所有国家,所有复选框都将被选中。

该部分包含有关应用内产品的设置。

开发人员使用的一种流行的货币化方法是应用内购买。这些是可以用真实货币购买的虚拟商品。在这里,您可以管理您的应用内产品,并设置价格、可购买的物品等。然而,如果您想在您的游戏或应用中进行应用内购买,您首先必须设置一个商户账户。

这是您可以看到Google提供的服务在您的应用/游戏中当前是否处于活动状态的地方。

如前所述,Google为应用开发人员提供各种服务。这是您可以设置您的应用/游戏上想要的服务的地方。

让我们分别讨论这些部分。

在这里,您可以设置有关您的应用/游戏的一般详情。

这些一般详情包括您应用的显示名称、描述、类别、图形资产等。您也可以在这里更改这些设置。

要能够使用Google服务,您首先必须链接您的应用。

链接您的应用将生成一个OAuth2密钥,您需要在应用的二进制文件中包含它,然后才能使用这些服务。在这里,您可以为您的应用选择不同的平台,即Android、iOS、Web等。点击其中任何一个将打开一个页面,在那里您必须填写某些细节,然后才能链接您的应用。我们将在后面的部分再回到这个问题。

让用户下载您的应用是一回事。确保已下载您的应用或游戏的用户继续使用它们,换句话说用户留存,是一个完全不同的专业领域,同样重要,甚至更重要。接下来的三个面板就是为此而设的。第一个是活动面板。

一旦您拥有了大量用户,您可以开始为参与或赢得活动的用户提供定期活动和奖励。活动可以包括每周比赛、游戏产品折扣等。这是保持用户参与游戏的好方法。要添加一个活动,点击添加活动,这将带您到活动页面,在那里您可以填写有关活动的详细信息。

保留用户的另一种方法是创建成就。成就是玩家必须在游戏中执行的目标或任务,以解锁相应的成就。这可能包括像玩游戏X次数,杀死Y个敌人等。通常,当玩家解锁成就时,他们会获得一些游戏内货币或类似的东西作为奖励。成就非常适合保持完美主义者玩家,他们玩游戏以完成游戏。这意味着完成游戏(如果有结局的话),解锁所有可解锁的内容,并解锁游戏中的每个成就。这也是您的游戏的必要组成部分,因为您至少需要五个成就才能发布您的游戏。

要添加一个成就,点击添加成就按钮,它会带你到成就详情页面。在这里,你可以设置所有成就的细节,比如成就的名称、如何解锁的描述、图标等等。

最后,但同样重要的是排行榜。排行榜是另一种留住玩家的方式,尤其是那些为了获得最高分而竞争的玩家。排行榜是一种列表,显示了在你的游戏中得分最高的玩家的名字,按照降序排列。

要添加一个排行榜,点击添加排行榜按钮,它会带你到排行榜详情页面。在这个页面上,你可以设置各种选项,比如名称、格式、排行榜的上限和下限等等。

这个部分包含了关于在你的应用/游戏上测试GooglePlay服务的各种选项。在发布游戏之前,建议你先测试你的应用,以确保一切正常运行,如果出现问题,及时修复再发布。

在这里,你可以看到服务是否准备好测试。如果没有,你将被告知在测试开始之前需要什么。你还可以通过点击添加测试人员按钮并输入他们各自的Google账户信息来邀请其他人测试你的应用/游戏。

最后,还有发布部分。一旦你填写了所有细节,添加了截图,设置了GooglePlay服务,测试了它们并且确信你的产品已经准备好发布,你就可以发布它。

在这里,你可以看到你的应用/游戏是否准备好发布。如果没有准备好,你可以看到缺少什么,以及在发布之前需要做什么。如果你的游戏已经发布,并且你想要将其从Play商店中移除,你可以通过点击删除你的游戏按钮来这样做。

这里也有各种部分,都包含不同的报告:

在这里,您可以查看和设置有关帐户详细信息、谁可以访问开发者控制台的权限等方面的各种选项。

这里也有各种部分,每个部分都根据选项类型进行分类,如下所示:

在设置部分,我们讨论了如何打开/关闭电子邮件警报。如果您已打开电子邮件警报,您将通过电子邮件接收有关应用程序的所有警报。如果您关闭了它,您可以在警报面板中查看这些警报。

既然我们已经讨论了开发者控制台,我们可以继续将我们的游戏发布到GooglePlay商店。

现在,由于应用程序超过50MB,您将需要使用GooglePlay服务,即APK扩展文件。转到游戏服务面板,然后转到游戏详细信息部分。在这里,填写所有字段,因为这些都是在您发布服务之前应用程序应具备的基本要求。这包括设置显示名称,您可以将其设置为Bloques。在描述部分,只需写出游戏是什么,游戏的目标等。

由于这是一个益智游戏,在类别字段中选择益智。此外,由于我们不需要保存的游戏,您可以将其设置为关闭。对于图形资产,您将需要至少两个:一个用于图标,一个用于特色图形。截图所需的分辨率为512x512,特色图形所需的分辨率为1024x500。您可以拍摄高分辨率截图并在Photoshop中进行编辑以创建您的图像。

一切都设置好后,单击屏幕顶部的保存。

keystore–exportcert–aliasandroiddebugkey–keystoreC:\Users\*YourUsername*\.android\debug.keystore–list–v完成后,Google将为您的游戏创建一个唯一的客户端ID以及一个应用程序ID。

接下来我们需要的是成就。为了发布我们的游戏,我们需要至少五个成就。您需要一个成就的名称,描述以及与之配套的图标。您可以创建自己的成就,但目前有五个成就如下:

您可以分配任意数量的积分。我们不需要排行榜,因为我们的游戏没有积分或分数。

现在我们需要回到引擎并在项目中定义一些设置。首先,我们需要设置我们将要进行的构建类型。要做到这一点,转到项目设置,在项目下,在打包部分,选中用于分发框。您会注意到构建配置选项将设置为Shipping并且该选项将被锁定。

接下来我们要做的是将一些值从开发者控制台复制到我们的项目中。转到项目设置|平台|Android。首先,在APK打包部分,取消选中将游戏数据打包在.apk内?。由于我们的游戏超过50MB,我们无法直接上传.apk文件。我们需要的是一个.obb文件,一个扩展文件,我们将除了.apk文件之外上传。取消此选项后,UE4将自动创建一个.apk文件(小于50MB)以及一个.obb文件(扩展文件)。

接下来,转到分发签名。如果我们要为出货打包我们的游戏,这部分是必要的。我们需要的第一件事是创建一个keystore文件。密钥库文件是一个具有一组密钥的二进制文件。您可以将其视为用于在应用商店上识别和验证您的应用的数字签名。有各种方法可以创建密钥库:其中之一是使用命令提示符的帮助。因此,以管理员身份运行命令提示符并输入以下命令:

keytool–genkey–v–keystore-*nameofyourproject*.keystore–alias*alias_name*-keyalgRSA–keysize2048–validity10000用Bloques(或您认为合适的任何名称)替换*项目名称*,用Game(或您认为合适的任何名称)替换*别名*。

在输入命令后,您将被要求填写一些其他信息,例如密钥库的密码,您的姓名,您公司的信息等。填写完毕后,密钥库将被创建。找到它并将其放置在*项目目录*/Build/Android中。

完成后,返回到项目首选项,在分发签名下,在密钥库中,输入您创建的keystore文件的名称,以及扩展名(例如,如果密钥库的名称是Bloques,则输入Bloques.keystore)。然后,在密钥别名中,输入别名(Game)。最后,在密钥库密码和密钥密码字段中,输入您在创建keystore文件时定义的密码。

接下来,我们需要GooglePlay许可密钥。这可以在开发者控制台的所有应用程序面板的服务和API的许可和应用内结算部分中找到。

这一长串看似随机的字符是我们的许可密钥。复制整个内容并粘贴到GooglePlay许可密钥部分。接下来,在成就地图中,填写您之前创建的成就的名称和ID。

只需在此处复制并粘贴名称以及ID。如果您有图标要添加,也可以在图标部分添加。现在我们已经准备好为分发打包我们的游戏。因此,在编辑器中,转到文件|打包项目|Android,选择任何格式并打包游戏。

构建完成后,转到您设置用于存储包的文件夹。您将看到项目的.apk文件、.bat文件和.obb文件。我们只需要.apk和.obb文件。

最后一步是将包上传到Play商店并填写更多细节。返回开发者控制台,转到所有应用程序。在其中,转到APK。在这里,我们上传我们的.apk和.obb文件。转到生产选项卡,然后单击上传APK;然后选择.apk文件。上传完成后,我们需要上传扩展名或.obb文件。

要上传.obb文件,请单击无扩展文件以打开下拉菜单,然后选择上传新文件。从那里,选择.obb文件。上传完成后,单击保存草稿。

接下来要做的是填写商店列表部分中的各个部分。这与我们在游戏服务面板的游戏详情部分中填写的内容类似。您可以复制粘贴字段。这里还需要至少两张截图。

接下来,转到内容评级。在这里,一旦您上传了APK,您将被要求填写一个问卷调查,这将正确评价您的应用程序。这些问题大多与您的游戏内容有关。填写并保存问卷。保存按钮位于底部。接下来,单击计算评级,它将为您的游戏生成适当的评级。一旦您看到您的评级,单击页面底部的应用评级。

最后需要填写的是定价和分销表格。在这里,您需要指定希望游戏在哪些国家可用,并勾选阅读并同意有关出口法律的指南等。

现在您已经准备好发布您的应用程序。要这样做,请单击开发者控制台右上角的发布应用,您的应用程序将被添加到GooglePlay商店供全世界下载、玩耍和享受。

制作好游戏是一回事。然而,最重要的是您的游戏能够产生收入,因为毕竟,我们都有账单要支付。自从手机游戏出现以来,出现了几种货币化模型。以下是开发人员用来产生收入的四种最受欢迎和广泛使用的货币化模型:

使用这种模式的优势是用户可以在购买之前尝试产品,这样他们更有可能在以后购买应用程序。这也是建立大型用户群的简单方法,因为应用程序没有前期收费,人们喜欢免费的东西。

另一方面,使用这种模式的一些缺点是,如果你提供的功能太少,用户将不会对购买整个产品产生足够的兴趣。另一方面,如果你提供的功能太多,用户将没有足够的理由购买整个产品。

每个开发者都希望通过各种类型的后期处理、复杂的着色器、照明等使他们的游戏变得漂亮而美丽。虽然在PC/游戏机上制作游戏时这是完全可以的,但你必须记住移动平台有一定的技术限制,这可能会导致你的游戏性能不佳,从而导致销售不佳。以下是一些关于如何优化游戏以实现最佳性能的技巧和窍门。

您可以在项目设置中的引擎类别下的渲染部分中设置一些渲染选项。

您可以从这里打开/关闭不同的功能,如照明,后期处理,纹理等,包括上述的最后两点。

在性能方面,您首先应该了解一些性能层次。它们都与游戏中的照明功能有关。在为移动设备开发游戏时,根据您的要求和目标平台,您应该牢记这些:

在本章中,我们讨论了UMG及其用户界面。使用它,我们为游戏创建了一个主菜单(其中包含游戏的名称和一个按钮,玩家触摸按钮后游戏开始)。做到这一点后,我们就准备好为Android设备打包我们的游戏了。

这样做的第一步是安装包含打包游戏所需的所有构建文件的AndroidSDK。安装完成后,下一步是指定引擎文件的位置。然后,我们讨论了如何设置Android设备以直接测试游戏,而无需每次都打包游戏。最后,我们讨论了如何打包最终产品并将游戏上传到GooglePlay商店供用户下载。

本章以有关少数被移动游戏开发者广泛使用的盈利模式的细节结束,以及有关如何为移动设备正确优化游戏的一些建议。

您现在已经掌握了开始制作您梦寐以求的游戏所需的一切知识。从现在开始,您在UE4上变得更好的唯一方法就是练习。

在本书中,我们涵盖了一系列主题,比如如何下载和安装UE4,如何创建项目,如何创建材料,从其他项目中添加/导入/迁移资产,使用蓝图进行脚本编写等等。希望到目前为止,您已经了解足够多关于UE4的知识,可以开始使用了。下一步是将您所学到的知识付诸实践。

我们在第一章中简要介绍了UE4启动器中的学习部分。让我们再多谈一些。

该面板包含了涵盖各种主题的教程,包括如何创建材料、蓝图等。这里提供的教程以以下各种格式提供。

在这里,您可以找到各种视频教程系列,都被整齐地分类以方便您查找。如果您向下滚动页面,您会找到浏览部分,列出了所有主题以及每个主题的视频系列数量。点击任何主题,您将看到为该特定主题提供的所有教程系列。

文档页面,就像视频教程页面一样,包含了各种主题的教程,但它们更深入,涵盖了更多的主题。左侧是导航面板。所有主题都在那里列出。点击任何带有+标志的主题会展开更多子主题,您可以从中选择您想要了解的内容。当您点击一个主题时,它会在屏幕的右侧打开。

如果您习惯在Unity上制作游戏,并想转到Unreal4,Epic提供了一份文档,比较了两个引擎的视口、术语等,以便您可以将您的技能从Unity转换到Unreal4。您可以在拓宽您的视野部分找到它

在这里,您可以找到由社区创建的教程、插件、代码和游戏,以帮助您发展技能。您还可以将自己的内容或教程提交到百科页面供他人查看。最后,您可以看到人们正在使用UE4开发的游戏列表。您也可以提交您的游戏以获得一些宣传。

强烈建议您下载内容示例项目。该项目文件包含了UE4提供的各种特性,以博物馆的方式展示在不同的关卡中。例如,有一个关卡展示了材质编辑器及其功能,还有一个关卡演示了动画特性等等。

这些项目大多包含蓝图,每个蓝图都包含游戏中通常找到的机制或功能。它们提供了框架,您可以用来构建游戏。例如,您可以找到一个包含回合制机制设置的项目文件,还有一个演示库存UI的项目,等等。

示例游戏项目提供了资产和设置好的关卡供您探索、学习和利用。您可以选择各种类型的游戏,例如2D平台游戏、3D平台游戏、FPS等等。

在撰写本文时,这个部分只包含两个项目文件,即RadialImpact,演示了保存菜单等内容,以及SciFiBunker,展示了UE4的渲染技术。

在撰写本文时,只有一个LeapMotion的示例项目可用。单击缩略图将带您到官方页面,在那里您可以下载并尝试LeapMotion的实验。

AnswerHub,另一个在第一章中简要介绍的话题,Unreal4入门,是一个您可以发布关于您遇到问题的特定主题的问题,或者如果您需要帮助的话。单击启动客户端左下角的AnswerHub超链接将带您到AnswerHub页面。

在首页,您可以看到其他成员发布的问题列表。现在,您遇到的问题很可能并不是独一无二的。因此,在发布问题之前,建议您首先在AnswerHub上搜索相同或类似的问题。只有当您找不到合适的解决方案或任何解决方案时,才应该发布问题。

要发布问题,请单击页面右上角的发布问题按钮,这将带您到提问页面。

您把问题放在最上面。确保问题清晰、简洁,并以一种读者能够在阅读后得到一个概念的方式进行书写。在下面,您可以选择问题所涉及的部分。例如,如果您在打包游戏时遇到困难,那么在这个部分,您应该选择打包和部署,等等。

在下面,您可以详细描述您的问题。这是您详细阐述您发布的问题的地方。再次强调,尽量保持简洁、清晰,如果可能的话,发布截图、日志文件等,以便其他人更容易理解您的问题。

最后,您需要给您的问题设置标签。标签可以让用户更容易搜索问题。当您搜索问题时,搜索引擎会将您写的内容与标签进行比较,因此请确保您正确地给问题打上标签。

帮助他人总是件好事。因此,如果你觉得自己可以帮助有问题的人,你应该通过回答其他成员发布的问题来帮助他/她。这是与社区互动的好方法,你也可能在这个过程中学到一些新东西。这也是建立你的声望分的好方法。如果你在AnswerHub上非常活跃,而且你的答案很有用,你会得到点赞,从而增加你的声望分(有点像Reddit)。

最后,我们有我们老牌的论坛。在引擎启动器上点击论坛超链接将带你到论坛页面。

在这里,我们看了一下你可以学习和提升你在阅读本指南后所获得的UE4技能的各种方式。

好消息是,UE4本身拥有大量的教程,几乎以各种格式提供,无论是书面的、视频的、项目文件、直播等等。仅仅通过阅读这些教程,你就可以学到很多关于引擎的知识。

如果你仍然需要关于特定方面或功能的帮助,或者你有一个似乎无法解决的问题,或者只是需要一些帮助,你总是可以在AnswerHub上发帖,让其他社区成员和/或Epic工作人员来解决。另外,如果你发现其他社区成员发布了一个问题,你认为自己知道答案,为什么不伸出援手呢?这将提高你的声望并保持社区的活跃。

最后,还有论坛,你也可以在这里寻求帮助,讨论最新的更新和市场新增内容,展示你的作品并获得一些反馈,给予他人作品的反馈,招募人才,或者加入一个团队等等。

THE END
1.怎么快速找到酒店房间对应房间wlan爱问知识人酒店wifi酒店找wifi的办法如下。首先,进入酒店后可以手机搜索到房间的wifi名字,一般房间号就是。其次,https://iask.sina.com.cn/b/newqIDbJ7dNiIf.html
2.yy怎么搜索频道房间yy搜索频道房间方法很多小伙伴使用yy的时候,想要搜索频道房间进入,但是不知道具体该怎么弄。下面小编就为大家带来了yy搜索频道房间的方法介绍,希望对你有所帮助哦! yy怎么搜索频道房间? 1、进入“yy”点击上方的“搜索”。 2、输入频道的频道号,即可进入。 3、还可以找到开黑房间一起开黑哦!https://shouyou.3dmgame.com/gl/323612.html
3.熊猫绘画怎么搜索用户熊猫绘画搜索房间方法熊猫绘画怎么搜索用户 熊猫绘画搜索房间方法 首先打开熊猫绘画创作页面,在页面的上方点开茶绘 然后进入到房间列表页面,在页面的右上角点击搜索按钮 最后在上方弹出页面里输入房间名称搜索即可https://www.liqucn.com/article/360913.shtml
4.用户如何在房间点歌帮助酷狗直播就是歌手多1、进入房间后,点视频区上方的操作按钮栏“点歌”按钮。 2、弹出点歌本窗口 用户可以点艺人预设好的歌,也可以通过搜索点自己喜欢的歌。 选择点歌本推荐的点歌曲目,点击“点歌”链接弹出寄语输入框 ,用户可以写下对艺人的寄语或者不写寄语选择“跳过” https://fanxing.kugou.com/index.php?action=faq&faq=faq15
5.《欢游》搜索房间方法在欢游app中,我们可以通过搜索房间号的方式来快速找到对应的房间,这样就能进入和其他用户一起玩了。那么欢游怎么搜索房间号呢?下面小编就为大家带来了欢游app搜索房间的方法介绍,我们一起来了解下吧! 欢游怎么搜索房间号? 1、进入APP后,首先点击右下角“小房子”按钮,之后再点击上方的“输入框”; https://www.codesocang.com/article/212085.html
6.ADSL(精选十篇)5) 家中的电话分机不要开启长途锁功能。一般用户家中的布线方式大约可分为分线式和总线式。分线式:从电信进户线到每个电话机都用1根电话线串联在一起。总线式:从电信进户线上并联着数条电话线, 每条电话线接到不同房间的电话机上。 以上两种改线方式中, 分线式因在一条线路上存在多个抽头和并接多个分离器https://www.360wenmi.com/f/cnkey2sl4moj.html
7.虎牙直播房间号怎么搜索手机软件php小编鱼仔为大家介绍虎牙直播,一款热门的网络直播平台,让用户可以观看各种直播内容。在虎牙直播中,每个主播都有自己的房间号,用户可以通过搜索功能找到自己喜欢的主播的直播间。本文将详细介绍如何在虎牙直播中搜索主播的房间号,帮助用户快速找到自己喜欢的直播内容。 虎牙直播app使用教程 虎牙直播房间号怎么搜索 方法https://m.php.cn/faq/700493.html
8.房聚良源系统功能介绍(SpringBoot)如今面向外来务工人员的房源越来越多,如何让拥有此类型房源的房东们更便捷地解决日常的房源房间管理、人员管理、业务计算等工作,房聚良源系统应运而生!该系统能够让房东们创建多个房源单位,而在单一房源单位的基础上设置该房源拥有的房间。房东们可在系统中办理房客入住、计算月租、退房等业务。亦可在日常对房客信息和https://blog.csdn.net/VEclipses/article/details/112020487
9.红人直播怎么搜房间号红人直播app赚钱提现方法介绍红人直播app是一个高颜值的美女视频直播平台,你如果是用户,则可以在这里进入任意的房间来观看那些美女主播的才艺表演和与她们进行实时互动,如果你是主播,则可以通过开直播来赚取收益。由于这款软件才刚出来,不少新手用户可能还不知道该怎么使用它,下面小编就针对用户和主播两类使用群体来给大家介绍一下如何搜索房间号和https://www.fxxz.com/study/88221.html
10.鲸云漫游平台隐私政策(1)您可以浏览房间列表、房间、房主或房间内用户个人资料页;在浏览的过程中,您可以关注您感兴趣的用户,也可以加他为好友进行消息互动;您也可以点击我的房间创建个人房间,还可以加入他人房间进行互动,在此过程中您可以使用平台上麦克风功能。为此,我们可能会收集使用您的设备信息,并可能访问您手机麦克风功能的权限。同时https://my.jingyungame.com/wap/privacyPolicy.html
11.用户功能:本系统分为管理员、酒店管理员、酒店员工、用户四种角色(角色菜单可自行分配) 用户功能: 注册、登录、酒店搜索、酒店列表、酒店预订、我的收藏、我的订单、我的记录、我的钱包、个人中心、密码修改 酒店管理员功能: 订单统计、疫情防疫统计、我的酒店、酒店前台、房间类型管理、床位类型管理、折扣管理 https://github.com/ynwynw/hotelManagePublic
12.从用户获取信息的角度讲,搜索引擎和智能推荐的区别是什么?下面哪种有关下述输出的说法是正确的 Corp# sh iP ospf neighbor Neighbor ID Pri State Dead Time Addtess Intece 172.31.1.4 1 FULL/BDR 00:00:34 10.10.10.2 FastEthernet0/0 192.168.20.1 0 FULL/ - 00:00:31 172.16.10.6 https://www.shuashuati.com/ti/1bea98ef2d374c30baf43101025c77fc.html?fm=bd9487568dbc70556f7b8008daf4a36a06
13.洋洋语音安卓手机版下载洋洋语音最新版本下载安卓版v2.3.5软件里有来自世界各地的用户,来自世界各地的用户都可以在这里见面。每个用户在注册时都需要经过严格的身份验证,以确保真正的友谊,防止机器人约会。洋洋语音应用会根据大数据为您推送匹配兴趣爱好的用户,让他们有更多共同话题。 洋洋语音怎么搜索房间号? 1、打开洋洋语音应用:确保你已经安装并登录了洋洋语音应用。 2、https://www.dianlut.com/soft/686750.html
14.web.brightsungifts.com/nodenews/91110029.htm百度用户服务中心 58.74MB 067好评 xxxxx96 视频二区在线国内 18禁APP下载 39.17MB 12好评 玩弄高傲美妇系列 国产ZLJZLJZLJZLJ18 疯狂七十二小时妺妺的房间H 64.30MB 488好评 水晶湘潭电化优胜劣汰iijzzzxxxzzz K6263.COM 未亡人白木优子JUC969 95.11MB 3944好评 中国成熟妇女毛绒绒 男人http://web.brightsungifts.com/nodenews/91110029.htm
15.她是女子,我也是女子据此前报道,OPPOPad2发布于2023年3月,这款平板采用一块11.61英寸2800×2000LCD屏幕,搭载联发科天玑9000移动平台,辅以LPDDR5RAM+UFS3.1闪存,8GB+256GB版售价2999元、12GB+256GB版售价3399元、12+512GB版售价3999元。-- 「活动」首次登录送19元红包 109.59MB http://www.ylyc.cn/adaplp98131.htm
16.内容发布项目管理系统功能清单导出:可以将查询房间的结果导出到EXCEL文档。 内容发布模块支持模糊搜索、组合检索和全文检索。模糊搜索:用户在大搜索框内输入一个关键词,系统将在房间全表各字段中进行模糊检索查询。组合检索:用户针对房间不同字段和数据项分别设置自己的模糊查询条件,房间模块每个数据项都可以设置为组合查询项。全文检索:用户https://www.huidiandian.com/app/4e6a19fa66b011ec944800163e08e502/custom/fun_intro/TfunIntro.html?id=c7ec7750a849bfb31f7f758aa8fee625