构建发布

创建游戏时,您可能随时想查看在编辑器外部构建和运行时作为独立或网络播放器的效果如何。本部分将说明如何访问构建设置 (Build Settings) 以及如何创建游戏的不同版本。

可以从文件 (File)->构建设置 (Build Settings)... 菜单项中访问发构建设置 (Build Settings) 窗口。构建游戏时,弹出一个可编辑的场景列表。


构建设置 (Build Settings) 窗口

第一次在工程内查看此窗口时,它显示为空白。如果发布游戏时该列表空白,那么只有当前打开的场景会包含在游戏内。如果想快速构建只包含一个场景文件的测试播放器,只需用空白的场景列表构建播放器。

为多场景游戏添加场景文件到列表中很简单。有两种添加方法。第一种是单击添加当前 (Add Current) 按钮,会看到当前打开的场景出现在列表中。第二种添加场景文件的方法是从工程视图 (Project View) 中将其拖到列表中。

此时,请注意每个场景都有一个不同的索引值。场景 0(Scene 0) 是构建游戏时第一个加载的场景。想要加载新场景时,可使用脚本内的Application.LoadLevel()

如果已添加一个以上场景文件并想重新排列,只需单击列表中的场景并拖至其他场景上面或下面,直至获得想要的顺序。

如果想从列表中删除场景,请单击场景,使其突出显示,并按 Command-Delete 键。场景会从列表中消失,不再包含在游戏内。

准备好发布游戏作品时,请选择平台 (Platform) 并确保 Unity 的徽标在平台旁显示;如果未显示,请单击切换平台 (Switch Platform) 按钮,告知 Unity 您想要构建的平台。最后,按发布 (Build) 按钮。可以使用标准的保存 (Save) 对话框选择游戏名称和保存位置。单击保存 (Save) 按钮时,Unity 将很快构建您的游戏。就这么简单。如果不确定要将构建的游戏保存在哪里,可考虑保存到工程根文件夹下,但是不能保存到资源 (Assets) 文件夹下。

勾选播放器上的开发构建 (Development Build) 复选框将启用分析器 (Profiler) 功能,也使自动连接分析器 (Autoconnect Profiler) 和脚本调试 (Script Debugging) 选项可用。

Desktop

网络流媒体播放器 (Streaming Web Player)

网络流媒体播放器 (Streaming Web Player) 允许场景 0 (Scene 0) 完成加载后立刻开始播放网页游戏。如果游戏有 10 个关卡,开始播放第 1 个关卡前让播放器等待并下载第 2-10 个关卡的所有资源并没有太大意义。发布网络流媒体播放器 (Streaming Web Player) 时,必须下载的资源将按照它们在场景 (Scene) 文件中的顺序来进行排列。场景 0 (Scene 0) 中包含的所有资源下载完成后,网络播放器 (Streaming Web Player) 开始播放。

简言之,网络流媒体播放器 (Streaming Web Player) 将让玩家玩游戏的速度比以前更快。

唯一需要做的事就是检查,确保想要加载的下个关卡在加载前已完成流式处理。

一般来说,在非流媒体播放器中,用户使用下列代码加载关卡:

Application.LoadLevel("levelName");

在网络流媒体播放器 (Streaming Web Player) 中,必须先检查关卡是否完成流式处理。该步骤通过 CanStreamedLevelBeLoaded() 函数完成。具体如下:

var levelToLoad = 1;

function LoadNewLevel () {
	if (Application.CanStreamedLevelBeLoaded (levelToLoad)) {
		Application.LoadLevel (levelToLoad);
	}
}

如果想要向玩家显示关卡数据流的进展情况,如做一个进度条或其他表现形式,可访问 GetStreamProgressForLevel()进一步了解。

离线部署网络播放器

如果启用网络播放器的离线部署 (Offline Deployment) 选项,那么 UnityObject.js 文件(用于将播放器与主页联系起来)会在构建过程中放到播放器旁边。这样,即使没有网络连接,也可以使播放器处理本地脚本文件;一般来说,UnityObject.js 从 Unity 网站服务器中下载,从而使用最新版本。

创建单机游戏

有了 Unity,用户可创建 Windows 和 Mac 系统(Intel、PowerPC 或 Universal,可在两种架构中运行)单机应用程序。只需在构建设置 (build settings) 对话框中选择构建目标,然后单击“发布 (Build)” 按钮即可。创建单机游戏时,产生的文件根据创建目标不同而有所不同。在 Windows 系统中会产生一个可执行文件 (.exe) 以及包含应用程序所有资源的数据 (Data) 文件夹。在 Mac 系统中会产生一个程序包,包含执行应用程序所需的所有文件以及资源。

在 Mac 系统中发布单机游戏只需要提供 该程序包(将所有内容打包在了一起)。在 Windows 系统中需要提供 .exe 文件和数据 (Data) 文件夹,他人才能运行。可以这样想:其他人必须要在自己的电脑上拥有 Unity 为您构建的所有相同文件,才能运行您的游戏。

内部构建过程

构建过程中会将一个已构建游戏应用程序的空白副本放在指定的位置。然后再处理构建设置中的场景列表,在编辑器中一个个打开、优化并整合到应用程序包中。它还会计算所含场景需要的所有资源并将数据保存在应用程序包的单个文件中。

  • 场景中标记有“限编辑器 (EditorOnly)” 的任何游戏对象 (GameObject) 不会包含在发布版本中。这对于调试不需包含在最终游戏版本中的脚本来说非常有用。
  • 加载新关卡时,上一个关卡的所有对象会销毁。为防止出现这种情况,请在任何不想销毁的对象上使用 DontDestroyOnLoad()。它是最常用的方法,在加载关卡时使音乐继续播放,或是用于保持游戏状态和进度的游戏控制脚本。
  • 加载新关卡完成后,信息:OnLevelWasLoaded() 将发送到所有活动的游戏对象。
  • 如需获得如何创建最佳多场景游戏的方法,如主菜单、高分屏以及真实游戏关卡的信息,请参阅 Scripting Tutorial.pdf。

iOS

iOS 内部构建过程

iPhone/iPad 应用程序构建过程分为两步:

  1. XCode 工程生成,包含所有必需的库、预编译 .NET 代码和序列化资源。
  2. XCode 工程在真正的设备上构建和部署。

点击“构建设置 (Build settings)” 对话框中的“发布 (Build)” 时,还只完成了第一步。点击“构建并运行 (Build and Run)” 完成第二步。如果在工程保存对话框中,用户选择已存在的文件夹,就会出现一条警报。目前有两种 XCode 工程生成模式供选择:

  • 替换 (replace) - 目标文件夹中的所有文件将删除,并生成新内容
  • 追加 (append) - “数据 (Data)”、“库 (Libraries)”和工程根文件夹清空,放入新生成的内容。XCode 工程文件按照 Unity 最新工程更改进行更新。XCode 工程“类 (Classes)” 子文件夹可视为安全位置,存放自定义本机代码,建议进行常规备份。仅对相同 Unity iOS 版本生成的现有 XCode 工程才支持追加 (Append) 模式。

如果点击 Cmd+B,那么将调用自动发布和运行过程,最后一次使用的文件夹被假定为创建目标。在这种情况下,追加 (append)模式假定为默认值。

Android

Android 应用程序构建过程分为两步:

  1. 生成应用程序包 (.apk file),包含所有必需的库和序列化资源。
  2. 在真正的设备上部署应用程序包。

点击“构建设置 (Build settings)” 对话框中的“发布 (Build)” 时,还只完成了第一步。点击“构建并运行 (Build and Run)” 完成第二步。如果点击 Cmd+B,那么将调用自动构建和运行过程,最后一次使用的文件夹被假定为创建目标。

第一次尝试构建 Android 工程时,Unity 会提醒用户查找 Android SDK,这是在设备上构建和安装 Android 应用程序所必需的。随后可在首选项 (Preferences) 中更改该设置。

向 Android 构建应用时,请确定设备设置中勾选了“USB 调试 (USB Debugging)” 和“允许模拟位置 (Allow mock locations)” 两项。

可以通过执行Android SDK/platform-tools 文件夹中的 adb devices 命令确保操作系统可发现设备。Mac 和 Windows 系统都是同样做法。

Unity 为用户构建一个应用程序包(.apk 文件)并安装到连接的设备上。在某些情况下,应用程序不能像在 iPhone 上自动启动,所以需要用户解锁屏幕,极少数情况下需要在菜单中查找新安装的应用程序。

纹理压缩 (Texture Compression)

构建设置 (Build settings) 项下可找到纹理压缩 (Texture Compression) 选项。对于无单独纹理格式替代的纹理来说,Unity 默认使用 ETC1/RGBA16 纹理格式(请参阅纹理二维/每个平台覆盖 (Texture 2D / Per-Platform Overrides))。

如果想要生成一个针对特定硬件架构的应用程序包(.apk 文件),可使用纹理压缩 (Texture Compression) 选项覆盖现有默认行为。设置为不压缩的任何纹理将被除开;只有使用压缩纹理格式的纹理才将使用纹理压缩 (Texture Compression) 选项中选定的格式。

为了确保应用程序只部署在支持所选纹理压缩的设备上,Unity 将编辑 AndroidManifest,以包含与所选特定格式相匹配的标签。这将启用 Android 市场 (Android Market) 筛选机制,只为带有合适图形硬件的设备提供 应用程序。

预加载 Preloading

发布的构建会在场景加载时自动预加载场景中的所有资源,场景 0(scene 0) 除外。因为第一个场景通常是启动画面,用户希望尽快显示完成。

为确保预加载所有内容,可以创建一个名为 Application.LoadLevel(1) 的空白场景。在构建设置中将该空白场景的索引号标为 0,所有后续关卡将被预加载。

准备好创建游戏

到现在为止,您已学会如何使用 Unity 界面、如何使用资源、如何创建场景以及如何发布构建的游戏,可以自由创建想要的游戏了。创建游戏时您肯定还会学到更多,我们将随时为您提供 帮助。

如需了解使用 Unity 的更多细节,请继续阅读手册或浏览组件参考部分。

如需了解有关脚本的更多内容,请阅读脚本参考部分。

如需了解有关创建艺术资源的更多内容,请阅读手册的资源部分

如需与 Unity 社区用户和开发人员互动,请访问 Unity 论坛。可随意提问、分享游戏工程、建立团队或做任何事情。请至少访问该论坛一次,让大家看看您设计的出色游戏。

Page last updated: 2013-06-18