AutoStreaming 支持多种资源类型,并通过小游戏平台提供的 UI 工具轻松配置资源的 Streaming 选项。详细用法请参考 AutoStreaming 用法。
我们采用低分辨率或低信息量的图片作为游戏首包内的原始贴图的替代品。游戏启动时,首先加载这些轻量级的贴图,以快速启动游戏。当游戏首次使用到某个纹理资源时,引擎会在后台从 UOS CDN 下载原始贴图,并在下载完成后自动替换。
我们称这种轻量级的图片为 Placeholder,目前提供以下几种类型:
类型 | 原图 | Placeholder | 说明 |
---|---|---|---|
缩略图 | ![]() |
![]() |
默认类型,适用于大多数情况 |
透明图 | ![]() |
![]() |
用于UI可不显示模糊状态 |
模糊图 | ![]() |
![]() |
需要维持原分辨率时使用 |
Placeholder 默认类型为缩略图,大小为 32x32 。 可以在 AutoStreaming -> Texture Streaming 页面查看每个 texture 当前的 placeholder 类型。 可在原图 Inspector 窗口修改,其中缩略图类型支持从 32 - 1024 的大小调整。
进入 Window -> Auto Streaming -> Texture Streaming:
功能 | 描述 |
---|---|
Sync Texture | 搜索 BuildSettings 中的 Scenes 引用到的所有 Texture 资源; |
Force Rebuild | 勾选后点击Generate AssetBundles,将强制重新生成 texture 的 AssetBundles; |
Generate AssetBundles | 为所有勾选的 texture 生成 AB,每张贴图一个 AB; |
Generate Placeholders | 为所有勾选的 texture 生成一张低分辨率的替用贴图;也可以选择生成透明或者模糊形式; |
ConvertLegacySpritePacker | 将旧式的Sprite packer 图集转换成SpriteAtlas,从而获得Streaming支持;该功能会清理所有Sprite上的Packing Tag,使用前请对工程做好备份。 |
Use SpriteAtlas Placeholder in Addressable | 游戏中使用了图集并且打包到了Addressables中,将替换其中的图集为更小的variant图集。 |
图集通过将多张小贴图合并成一张大贴图来减少 DrawCall,提升性能。
图集的 Streaming 配置与纹理资源类似,也在 Texture Streaming 页面设置,但我们使用图集的 Variant 作为 Placeholder,通过调整 Variant 的 Scale 来缩小尺寸。 在 Variant 图集的 Inspector 窗口勾选 Transparent 选项,可以使用透明贴图。
原图集 | 缩略图集 Placeholder | 透明图集 Placeholder |
---|---|---|
![]() |
![]() |
![]() |
Audio,Mesh,Animation 和 Font 的 Streaming 处理与 Texture / SpriteAtlas 不同。
AutoStreaming 保留了这几类资源的对象,支持将本地较大的音频和mesh等资源内的数据从 游戏首包 / AB 中抽离出来,部署到 UOS CDN 服务器上。当游戏首次使用到该 Audio / Mesh / Animation 资源时,将触发引擎后台线程下载资源数据,完成后自动加载使用。
由于资源数据的抽取发生在打包 AB 或小游戏时,并且自动生成,因此不需要像 Scene / Texture 一样主动点一次打包 AB 。
Audio Streaming | Mesh Streaming | Animation Streaming |
---|---|---|
![]() |
![]() |
![]() |
选择 BuildSettings 中的场景打包成 AssetBundle ,并部署到 UOS CDN 服务器上。需注意,Scene Streaming 依赖于 Texture/Audio/Mesh/Animation/Font Streaming 的配置,操作时需先完成以上配置。
开发者像往常一样通过 SceneManager 调用 LoadScene 或 LoadSceneAsync。底层将自动触发下载,完成后自动加载场景。 支持通过 scene name 和 Index 的加载。
功能 | 描述 |
---|---|
Sync Scenes | 获取 Build setting 中的Active的所有场景,并在下方显示; |
Force Rebuild | 勾选后,点击Generate ABs时将强制重新生成所有场景的AB; |
Generate AssetBundle | 生成场景的AB,以及场景共享资源AB; |
Sync SharedAssets | 搜索勾选了Streaming的场景中的共同引用到的资源。 |
问题:将每个场景单独打包成一个 AssetBundle 可能会导致被多个场景引用的资源被重复打包,从而增加场景 AssetBundle 的总量,浪费下载时间和 CDN 流量。
解决方案:将这些共享资源打包进一个单独的共享 AB 中,使得场景 AB 依赖于这个共享 AB,从而避免资源冗余。详细用法请参考AutoStreaming用法
所有 AutoStreaming 生成的资源文件都以 .abas 为后缀,并且存放在 Library\AutoStreamingCache
目录下。在 Window -> AutoStreaming -> Cfg&Publish 页面右侧,提供了对所有 AutoStreaming 资源文件大小的统计信息。
AutoStreaming 资源文件有以下两种类型:
文件类型 | 资源类型 | 文件名 | 上传附加hash |
---|---|---|---|
AssetBundle 文件 | Scene、Texture、SpriteAtlas | 资源 guid | 是 |
二进制文件 | Audio,Mesh,Animation,Font | 文件 hash | 否 |
其中 AssetBundle 文件类型在上传到 UOS CDN 时,会计算 hash ,并附加在文件名后,因此实际访问这些资源文件时的 URL 为:
{ Cfg & Publish 页面可复制的 Auto Streaming Path } + “/AS/” + {guid} + “_” + {hash} +“.abas”
AutoStreaming 资源文件可通过同目录下,与其同名的 *.abas.info 或 *.abas.manifest 文件查看对应的原始资源。