Version: 1.3
语言 : 中文
微信资源缓存
资源搜索和引用标签

Auto Streaming用法

一个游戏中,资源占据了游戏的大部分空间,并且在游戏启动时仅有少部分资源是必需的。运行时,通常也不会使用到加载的所有资源。 AutoStreaming,即资源自动按需加载,主要目的有以下三点:

  • 从引擎底层支持按需加载,降低从原生App转为微信小游戏,修改代码逻辑的工作量

  • 减小微信小游戏的首包,从而加快小游戏启动速度

  • 避免未使用到的资源加载进内存,减少小游戏的内存占用

AutoStreaming支持以下资源类型,所有资源的Streaming配置均可通过InstantGame提供的UI工具完成:

纹理(Texture)

使用一张低分辨率/低信息量图片替换游戏首包内的原始贴图,游戏运行时,先加载低分辨率/低信息量的贴图,快速启动游戏。当游戏首次使用到该Texture资源时,将触发引擎后台线程从UOS CDN下载原始贴图,完成后自动替换为原始贴图。 我们称这张低分辨率/低信息量的图为Placeholder,目前支持以下几种类型的Placeholder:

类型 原图 Placeholder 说明
缩略图 默认类型,适用于大多数情况
透明图 用于UI可不显示模糊状态
模糊图 需要维持原分辨率时使用

Placeholder默认类型为缩略图,大小为32x32。 可以在AutoStreaming -> Texture Streaming页面查看每个texture当前的placeholder类型 类型可在原图Inspector窗口修改,其中缩略图类型支持从32 - 1024的大小调整。

图集(SpriteAtlas)

图集将多张小贴图合并成一张大的贴图,以减少DrawCall,提升性能。 图集的streaming方式与纹理资源类似,也在Texture Streaming页面设置,但我们使用图集的variant作为Placeholder,通过调整variant的scale来缩小尺寸。 在Variant图集的Inspector窗口勾选Tranparent选项,可以使用透明贴图。

原图集 缩略图集Placeholder 透明图集Placeholder

Audio/Mesh/Animation/Font

Audio,Mesh,Animation和Font的Streaming处理与Texture/SpriteAtlas不同。 我们保留了这几类资源的对象,仅将资源内的数据从游戏首包/AB 中抽离出来,部署UOS CDN服务器上。当游戏首次使用到该Audio/Mesh资源时,将触发引擎后台线程下载资源数据,完成后自动加载到原资源对象中使用。

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

Scenes

将BuildSettings中的场景打包成 AssetBundle,并部署到CCD服务器上。开发者像往常一样通过 SceneManager 调用 LoadScene/LoadSceneAsync。底层将自动触发下载,完成后自动加载场景。支持通过scene name 和 Index的加载。

将每个场景单独打包成一个AB,可能会带来一个问题。被多个场景引用的资源,会被重复打包进多个scene AB中,导致scene AB总量过大,浪费场景下载时间和UOS CDN流量。 为解决这个问题,我们把这些共享资源打包进一个额外的共享AB中, 让scene AB依赖于这个共享AB,避免冗余。 由于共享AB(下图选中文件)需要在首场景前准备好,因而不宜过大(小于3MB),我们建议仅勾选对场景AB总量影响严重的资源,如:

  • 被大多数场景引用到的资源(References中包含场景序号较多的资源)

  • 本身较大的shader等资源

FBX文件中可能包含模型材质等诸多资源,而场景引用的仅是其中的一个或少数几个,因此不推荐勾选FBX文件,避免共享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文件查看对应的原始资源。

微信资源缓存
资源搜索和引用标签