本章节延续快速上手的 Endless Runner 示例,介绍 AutoStreaming 的详细用法及流程。
若您希望在自己的小游戏中使用 AutoStreaming,请先根据以下指导完成准备工作。
使用 AutoStreaming 功能需要配合 InstantGame Package 使用。
由 Window -> Package Manager ,选择 Unity Registry , 搜索 instant game , 点击 install 安装以下package最新版本:
如果在 PackageManager 中无法搜索到,请在项目的 Packages/manifest.json 文件中直接添加以下package:
"com.unity.instantgame": "1.0.11"
小游戏 AutoStreaming 功能默认使用 UOS CDN 作为部署 streaming 资源的云服务器,分离的资源将被托管至 UOS CDN 服务。UOS 在 CDN 基础上提供了便捷的云端资源的版本管理。具体操作可参考UOS云服务。
完成后网页将自动跳转到项目的概览页面,点击右侧的 CDN 免费试用 按钮开启 CDN 功能。
从设置页面获取 App ID 和 App Service Secret ,并填写到 Cfg & Publish 窗口的对应输入框中。
单击 Bucket to Use 栏 Refresh 按钮拉取 Endless_Runner 的 Bucket/Badge 信息。
选择或者创建新的 Bucket/Badge 并使用。以 Endless_Runner 为例,由于新建项目尚不存在 bucket 或 badge ,新建一个名为 Endless_Runner 的 bucket,并在该 bucket 下新建一个名为 v1 的 badge 。
注:UOS CDN 会为每一个 Bucket 自动生成一个名为 latest 的 badge ,每次上传文件,该 badge 位置都会自动更新,始终指向最新的资源版本,因此不要在提交给小游戏平台的版本中使用 latest ,以免后续资源更新时影响已发布版本。
小游戏中不同的文件类型根据其特性和用途,有不同的上传和管理方式,详情请阅读 UOS文件上传和下载 章节。本示例不涉及其他类型的文件上传。
在具体配置 AutoStreaming 之前,引擎需要知道哪些资产是当前游戏正在使用的。 大多数情况下,引擎 AutoStreaming 工具能够自动找到这些资产。
但通过 BuildPipeline.BuildAssetBundles ( string outputPath, **AssetBundleBuild[] builds**, ... )
从代码中打包的AB,无法被 AutoStreaming 自动搜索到,因此需要用户额外提供一个自定义AB中所有资产的列表文件。
可前往资产搜索和引用标签页面查看如何生成和设置资源列表文件。
完成以上基础配置后,即可进入 Auto Streaming 界面进行相关 Streaming 配置。
进入 Window -> Auto Streaming -> Texture Streaming:
首次打包操作流程:
更新操作流程:
最新版本的团结引擎已支持增量打包,能够显著提高打包效率。如果需要也可以勾选 Force Rebuild ,强制全部重新打包。
注: 如果游戏中使用了图集 SpriteAtlas ,并且图集打包到了 Addressables 中,请在上述操作完成后,需要额外点击按钮 “Use SpriteAtlas Placeholder in Addressable” 来替换其中的图集为小图。
图集的 Streaming 配置与纹理资源类似,也在 Texture Streaming 页面设置,但我们使用图集的 Variant 作为 Placeholder,通过调整 Variant 的 Scale 来缩小尺寸。 在 Variant 图集的 Inspector 窗口勾选 Transparent 选项,可以使用透明贴图。
由于资源数据的抽取发生在打包 AB 或小游戏时,并且自动生成,因此不需要像 Scene / Texture 一样主动点一次打包 AB 。
Audio Streaming | Mesh Streaming | Animation Streaming |
---|---|---|
![]() |
![]() |
![]() |
注:如果某个 Audio/Mesh/Animation 勾选了 Streaming 导致游戏出现问题(勾选 Streaming 会使 Audio/Mesh 的数据延迟,在代码中对该 Audio/Mesh 进行了读写操作, 可能出现问题),取消勾选该 Audio/Mesh/Animation 即可。
Scene Streaming 依赖于 Texture/Audio/Mesh/Animation/Font Streaming 的配置,请务必先执行前面的操作。
选择 BuildSettings 中的场景打包成 AssetBundle ,并部署到 UOS CDN 服务器上。
共享AB的注意事项:
游戏中如果存在以下使用情况,需要在配置好 Texture/Audio/Mesh/Animation Streaming 后完全重新打包(删除已有AB后打包),从而抽取出AB中的重度资源(纹理、网格等):
游戏工程使用了 AB
游戏工程使用了 Addressables
AB/Addressables 中的资源抽取依赖于 Texture/Audio/Mesh/Animation/Font Streaming 的配置,请务必先执行前面的操作。
由于小游戏首包内不存在本地文件,因此所有的 AB/Addressables 和都需要上传到 CDN ,运行时通过网络下载。 而下载需要时间,因此游戏逻辑中通常需要支持异步加载 AB 的,或者提前准备好所需 AB ,这与是否使用 AutoStreaming 方案无关,详细介绍请参考小游戏平台简介中文件系统和网络小节。
如果项目中使用了 AB 或 Addressables ,且文件并非存放在 StreamingAssets 目录,则需要在 AB/Addressable 后增加一次文件拷贝操作,请参考UOS上传和下载文件了解详细操作。
在小游戏打包完成后,需要前往 Window -> Auto Streaming -> Cfg & Publish 页面点击 Upload to UOS CDN上传文件。
注: 微信小游戏平台将在小游戏打包完成后自动上传