Version: 1.5
语言 : 中文
AutoStreaming 介绍
资源搜索和引用标签

AutoStreaming 用法

本章节延续快速上手的 Endless Runner 示例,介绍 AutoStreaming 的详细用法及流程。

前期准备

若您希望在自己的小游戏中使用 AutoStreaming,请先根据以下指导完成准备工作。

1. 安装 Instant Package

使用 AutoStreaming 功能需要配合 InstantGame Package 使用。

  • Window -> Package Manager ,选择 Unity Registry , 搜索 instant game , 点击 install 安装以下package最新版本:

  • 如果在 PackageManager 中无法搜索到,请在项目的 Packages/manifest.json 文件中直接添加以下package: "com.unity.instantgame": "1.0.11"

2. 配置 AutoStreaming 功能

  • Windows -> Auto Streaming 进入 Instant Game 窗口,该窗口包含了打包小游戏前的资源 Streaming 设置,以及上传云资源到 UOS CDN 的设置。
  • 切换至 Cfg & Publish 窗口,勾选 Use AutoStreaming,如果后续需要使用一般的打包流程,取消勾选该选项即可。
    • (可选)勾选 Use Font Streaming ,开启字体资源的Streaming。
    • 将下载的 Autostreaming 原始纹理AB缓存在内存当中,以减少纹理模糊的时间,会明显提升内存使用
    • Max Cocurrent Load 参数用以设置 AutoStreaming 最大后台下载和加载任务数量。区间为 0–20,值为0时,则使用引擎默认值。

3. 配置 UOS CDN 服务

小游戏 AutoStreaming 功能默认使用 UOS CDN 作为部署 streaming 资源的云服务器,分离的资源将被托管至 UOS CDN 服务。UOS 在 CDN 基础上提供了便捷的云端资源的版本管理。具体操作可参考UOS云服务

  • 前往Unity Online Service 首页,登陆后进入应用面板,点击灰色的 + 新建应用,创建一个名为 Endless_Runner 的项目,然后启用UOS(如已有 Endless_Runner 项目可直接启用 UOS;若无,点击列表右上角的 “创建新的项目”)。

  • 完成后网页将自动跳转到项目的概览页面,点击右侧的 CDN 免费试用 按钮开启 CDN 功能。

  • 设置页面获取 App IDApp 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文件上传和下载 章节。本示例不涉及其他类型的文件上传。

4. 配置资产列表

在具体配置 AutoStreaming 之前,引擎需要知道哪些资产是当前游戏正在使用的。 大多数情况下,引擎 AutoStreaming 工具能够自动找到这些资产。

但通过 BuildPipeline.BuildAssetBundles ( string outputPath, **AssetBundleBuild[] builds**, ... )从代码中打包的AB,无法被 AutoStreaming 自动搜索到,因此需要用户额外提供一个自定义AB中所有资产的列表文件。

可前往资产搜索和引用标签页面查看如何生成和设置资源列表文件。

AutoStreaming 配置

完成以上基础配置后,即可进入 Auto Streaming 界面进行相关 Streaming 配置。

1. 配置 Texture Streaming

进入 Window -> Auto Streaming -> Texture Streaming

首次打包操作流程

  1. 点击 convertLegacySpritePacker(可选);
  2. 点击 Sync Texture 搜索所有 Texture 资源, Ctrl + A 选中所有图片,再勾选 OnDemandDownload
  3. 点击 Generate AssetBundles ,为所有勾选的 texture 生成 AB,每张贴图一个 AB;
  4. 点击表头按生成的AB大小排序,取消勾选 AB 过小的图片(例如小5KB,可按住Shift多选);
  5. 再次点击 Generate AssetBundles ,清理不需要的AB ;
  6. 最后点击 Generate Placeholders

更新操作流程

  1. 点击 Sync Texture
  2. 调整 OnDemandDownload 的勾选;
  3. 点击 Generate AssetBundles 重新生成AB ;
  4. 点击 Generate Placeholders

最新版本的团结引擎已支持增量打包,能够显著提高打包效率。如果需要也可以勾选 Force Rebuild ,强制全部重新打包。

注: 如果游戏中使用了图集 SpriteAtlas ,并且图集打包到了 Addressables 中,请在上述操作完成后,需要额外点击按钮 “Use SpriteAtlas Placeholder in Addressable” 来替换其中的图集为小图。

图集(SpriteAtlas)

图集的 Streaming 配置与纹理资源类似,也在 Texture Streaming 页面设置,但我们使用图集的 Variant 作为 Placeholder,通过调整 Variant 的 Scale 来缩小尺寸。 在 Variant 图集的 Inspector 窗口勾选 Transparent 选项,可以使用透明贴图。

2. 配置 Audio/Mesh/Animation/Font Streaming

由于资源数据的抽取发生在打包 AB 或小游戏时,并且自动生成,因此不需要像 Scene / Texture 一样主动点一次打包 AB 。

  • 使用流程:在对应页面点击 Sync Audios/Meshes/Animations → 勾选 RT Mem 较大(例如大于5K)的资源。
Audio Streaming Mesh Streaming Animation Streaming

注:如果某个 Audio/Mesh/Animation 勾选了 Streaming 导致游戏出现问题(勾选 Streaming 会使 Audio/Mesh 的数据延迟,在代码中对该 Audio/Mesh 进行了读写操作, 可能出现问题),取消勾选该 Audio/Mesh/Animation 即可。

  • 若需要使用 Font Streaming,请在 Cfg & Publish 窗口勾选 Use Font Streaming(experimental) ,开启字体资源的Streaming。

3. 配置 Scene Streaming

Scene Streaming 依赖于 Texture/Audio/Mesh/Animation/Font Streaming 的配置,请务必先执行前面的操作。

选择 BuildSettings 中的场景打包成 AssetBundle ,并部署到 UOS CDN 服务器上。

  • 使用流程:点击 Sync Scenes → 选择需要 Streaming 的场景 → 点击 Sync SharedAssets → 勾选 SharedAssets 资源 → 如果已经生成过场景AB,勾选 Force Rebuild → 点击左上角的 Generate ABs

共享AB的注意事项

  • Scenes 列表中建议勾选除首场景外的其他所有场景,首场景若开启Streaming,启动时会有明显的黑屏时间,因此不建议勾选
  • 由于共享 AB(下图选中文件)需要在首场景前准备好,因而不宜过大(小于3MB),我们建议仅勾选对场景 AB 总量影响严重的资源,如:
    • 被大多数场景引用到的资源(References 中包含场景序号较多的资源)
    • 本身较大的 Shader、字体等资源
  • FBX文件中可能包含模型材质等诸多资源,而场景引用的仅是其中的一个或少数几个,因此不推荐勾选FBX文件,避免共享AB过大。

4. 打包 AB/Addressables

游戏中如果存在以下使用情况,需要在配置好 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上传和下载文件了解详细操作。

5. 资源文件上传CDN

在小游戏打包完成后,需要前往 Window -> Auto Streaming -> Cfg & Publish 页面点击 Upload to UOS CDN上传文件。

注: 微信小游戏平台将在小游戏打包完成后自动上传

相关阅读

AutoStreaming 介绍
资源搜索和引用标签