打包项目

概述

在将虚幻引擎项目发布给用户之前,必须正确地打包项目。打包处理确保所有的代码及内容都是最新的,并且具有可以在目标平台上运行的正确格式。

在执行打包过程中,要执行许多步骤。如果一个项目有自定义的源码,那么将先编译该源码。然后,需要把所有需内容转换成为目标平台可以使用的格式(所谓的内容烘焙)。之后,这些编译好的代码及烘焙好的内容将会被打包到一个可发布的文件集合中,比如一个针对Windows的安装包。

File 主菜单下,有一个 Package Project(打包项目) 选项,它有一个子菜单。该子菜单显示了您可以为其准备项目包文件的所有平台。打包的目的是为了测试您的 整个游戏而不是一张单独的地图;或者是为了准备游戏以进行提交或发布。

对于Android平台来说,有多个选项。请参照 Android Texture Formats(安卓贴图格式)页面获得更多信息。

在打包之前,您还可以设置一些 Advanced(高级) 选项。

一旦您选择了平台,如果游戏中包含代码则先编译您的游戏,烘焙所有游戏数据,然后打包内容。如果您的项目包含Starter Content(初学者内容),或者如果您制作了很多 测试/临时 内容及地图,那么将是个很慢的过程。

创建包

要想针对一个特定平台打包一个项目,那么请在编辑器的主菜单中点击 File(文件) > Package Project(打包项目) > [PlatformName]

packaging_menu.png

您将会看到一个供您选择目标目录的对话框。如果打包成功,那么这个目录稍后将包含打包后的项目。

确认目标目录后,将启动针对选中平台打包项目的实际过程。由于打包过程是非常耗时的,所以这个过程是在后台执行的,您可以继续使用编辑器。在编辑器右下角将显示一个状态指示器来显示打包进度:

progress.png

状态指示器提供了一种取消当前激活的打包过程的方法,只需点击 Cancel(取消)按钮即可。通过点击Show Log(显示日志)链接,可以显示扩展的输出日志信息。如果打包过程没有成功完成,输出日志对于查找问题根源是有用的。

log.png

对于经验不太多的用户,最重要的日志信息(比如错误和警告)会记录到正常的Message Log(消息日志)窗口中。

message_log.png

运行打包的游戏

当您打包时,您选择了一个输出目录。如果打包过程成功完成,那么您打包的游戏将会在针对特定平台的子目录中。比如,如果您选择了TappyChicken/Final目录,那么iOS版本应该在 TappyChicken/Final/IOS 目录中,Android版本将会在 TappyChicken/Final/Android 目录中。当您进入到那个子目录,您将会看到打包好的游戏,其格式适合于那个平台。 对于Android平台来说,您将看到 .apk 、 .obb, 和 .bat 文件(运行 .bat 文件来在您的设备上安装该游戏)。对于IOS平台来说,您将看到一个.ipa文件。这可以通过iTunes 或 Xcode 进行安装。 根据目标平台的不同,所创建的文件的数量和类型也有所不同。以下图片显示了一个Windows项目的示例输出:

results.png

要想运行您打包好的游戏:

  1. 使用以下表格找到您的打包游戏的可执行文件:

    配置 EXE 名称 EXE 位置
    Development(开发) [ProjectName].exe [PackageDirectory]\WindowsNoEditor\[ProjectName]\Binaries\Win64
    Shipping(发行) [ProjectName]-Win32-Shipping.exe.exe [PackageDirectory]\WindowsNoEditor\[ProjectName]\Binaries\Win32
  2. 双击 该可执行文件来运行游戏。

发布

要想将一款IOS或Android游戏提交到App Store或Google Play Store上,您需要以Distribution(发布)模式创建您的包。要想完成这个操作,请跳转到 Packaging(打包) 菜单中的 Packaging Settings(打包设置) 选项处, 并选中 Distribution(发布)复选框。它将会正确地签署最终的包文件。

在IOS平台上,您将需要在Apple的开发者网站上创建一个发布证书(Certificate)和MobileProvision。像安装您的Development(开发)证书那样安装该证书,并在旁边 以Distro_ 为前缀命名您的发布概述文件(以便您具有 Distro_MyProject.mobileprovisionMyProject.mobileprovision )。

在Android平台上,您需要创建一个密钥来签署.apk文件,并使用 SigningConfig.xml 文件向您的编译工具提供一些信息。该文件位于安装的Engine目录 (Engine/Build/Android/Java)内。如果您编辑该文件,它将应用给您的所有项目。但是,您可以把该文件复制到项目的 Build/Android 目录(没有Java 目录),这样 它将仅用于那个项目。关于如何生成密钥及填写该文件的信息可以在该文件内部找到。

高级设置

在主菜单中点击 File(文件) > Package Project(打包项目) > Packaging Settings(打包设置)... ,将为您提供许多针对打包功能的高级配置选项。

settings.png

目前,这些选项包括:

选项 描述
Build Configuration(编译配置) 编译基于代码的项目所使用的编译配置。如果进行调试,请选择Debug(调试);如果大部分时候都是进行开发,需要少量的调试支持,但是具有较好的性能,请选择Development(开发);如果需要最终的发布版本,请选择Shipping(发行)。
Staging Directory(暂存目录) 将包含您的打包版本的目录。当您在目标目录选项中选择了一个不同的目录时,该项将会进行自动更新。
Full Rebuild(完全重新编译) 是否重新编译所有的代码。如果禁用该项,那么则仅编译已经修改的代码。这将会加快打包过程。对于发行版本,您应该总是进行完全的重新编译,以确保不会丢失任何内容,保证内容是最新的。该选项默认是启用的。
Use Pak File(使用包文件) 是将您的项目资源打包成单独的资源还是打包成一个包。如果启用该项,那么所有资源将会被放到一个单独的.pak文件中,而不是复制出所有的独立文件。如果您的项目有大量资源文件,那么使用一个包文件可能会使得发布过程变得更加简单,因为您不需要传送如此多的文件。该选项默认时启用的。

内容烘焙

作为开发人员,当迭代处理新的游戏内容或已修改的游戏内容时,您可能不想总是经历把所有内容打包到临时目录中,然后从那里运行内容资源的冗长过程。因此,你可以通过点击 File(文件) > Cook Content(烘焙内容) > [PlatformName] ,您可以仅针对特定平台烘焙内容,不必打包它。

请注意,这个功能将更新您项目的本地开发者工作区中的内容,并且它不会把任何资源复制到临时目录中。您可以从您的本地开发者工作区中直接运行您的游戏来进行快速迭代开发。