在游戏开发中,资源管理是至关重要的一环。通常,游戏中的资源占据了大部分的空间,而且在游戏启动时,只有少数资源是立即需要的。为了解决这一问题,我们引入了 AutoStreaming 技术,它能够自动按需加载资源,带来以下优势:
AutoStreaming 支持多种资源类型,并通过小游戏平台提供的 UI 工具轻松配置资源的 Streaming 选项:
我们采用低分辨率或低信息量的图片作为游戏首包内的原始贴图的替代品。游戏启动时,首先加载这些轻量级的贴图,以快速启动游戏。当游戏首次使用到某个纹理资源时,引擎会在后台从 UOS CDN 下载原始贴图,并在下载完成后自动替换。
我们称这种轻量级的图片为 Placeholder,目前提供以下几种类型:
类型 | 原图 | Placeholder | 说明 |
---|---|---|---|
缩略图 | ![]() |
![]() |
默认类型,适用于大多数情况 |
透明图 | ![]() |
![]() |
用于UI可不显示模糊状态 |
模糊图 | ![]() |
![]() |
需要维持原分辨率时使用 |
Placeholder 默认类型为缩略图,大小为 32x32 。 可以在 AutoStreaming -> Texture Streaming 页面查看每个 texture 当前的 placeholder 类型。 可在原图 Inspector 窗口修改,其中缩略图类型支持从 32 - 1024 的大小调整。
首次打包操作流程:
更新操作流程:
最新版本团结已支持增量打包,能够显著提高打包效率。如果需要也可以勾选 Force Rebuild ,强制全部重新打包。
图集通过将多张小贴图合并成一张大贴图来减少 DrawCall,提升性能。
图集的 Streaming 配置与纹理资源类似,也在 Texture Streaming 页面设置,但我们使用图集的 Variant 作为 Placeholder,通过调整 Variant 的 Scale 来缩小尺寸。 在 Variant 图集的 Inspector 窗口勾选 Transparent 选项,可以使用透明贴图。
原图集 | 缩略图集 Placeholder | 透明图集 Placeholder |
---|---|---|
![]() |
![]() |
![]() |
Audio,Mesh,Animation 和 Font 的 Streaming 处理与 Texture / SpriteAtlas 不同。
我们保留了这几类资源的对象,仅将资源内的数据从 游戏首包 / AB 中抽离出来,部署到 UOS CDN 服务器上。当游戏首次使用到该 Audio / Mesh 资源时,将触发引擎后台线程下载资源数据,完成后自动加载到原资源对象中使用。
由于资源数据的抽取发生在打包 AB 或小游戏时,并且自动生成,因此不需要像 Scene / Texture 一样主动点一次打包 AB 。
选择 BuildSettings 中的场景打包成 AssetBundle ,并部署到 UOS CDN 服务器上。
开发者像往常一样通过 SceneManager 调用 LoadScene 或 LoadSceneAsync。底层将自动触发下载,完成后自动加载场景。
支持通过 scene name 和 Index 的加载。
问题:将每个场景单独打包成一个 AssetBundle 可能会导致被多个场景引用的资源被重复打包,从而增加场景 AssetBundle 的总量,浪费下载时间和 CDN 流量。
解决方案:将这些共享资源打包进一个单独的共享 AB 中,使得场景 AB 依赖于这个共享 AB,从而避免资源冗余。
共享AB的注意事项:由于共享 AB(下图选中文件)需要在首场景前准备好,因而不宜过大(小于3MB),我们建议仅勾选对场景 AB 总量影响严重的资源,如:
被大多数场景引用到的资源(References 中包含场景序号较多的资源)
本身较大的 shader 等资源
FBX文件中可能包含模型材质等诸多资源,而场景引用的仅是其中的一个或少数几个,因此不推荐勾选FBX文件,避免共享AB过大。
所有 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 文件查看对应的原始资源。