跳到主要内容

UOS文件上传和下载

上传文件到UOS

使用AutoStreaming按需加载方案,组成小游戏的文件包括:

  • AutoStreaming文件: 由AutoStreaming Editor工具抽取出来的资源文件,运行时引擎自动下载使用;
  • 小游戏首包数据文件: 打包微信小游戏时生成,主要包括引擎默认资源,首场景,il2cpp metadata,小游戏启动时由微信下载使用。
  • StreamingAssets: 工程目录的Assets/StreamingAssets文件夹内的所有文件
  • AssetBundle文件: 游戏中打包的所有AB文件
  • Addressables文件: Addressables打包的所有文件
  • 其他文件: 其余游戏中使用到的文件,如视频,服务器配置文件等

其中AutoStreaming文件,需要被引擎直接使用,只能存放在UOS CDN上。AutoStreaming文件、小游戏首包数据文件以及StreamingAssets由InstantGame package管理,在打包微信小游戏后,会自动上传到 UOS CDN。

文件类型强制使用UOS CDN自动管理上传
AutoStreaming文件
小游戏首包数据文件
StreamingAssets
AssetBundle文件
Addressables文件
其他文件

对于无法自动上传的AssetBundle文件、Addressable文件、以及启动配置文件等等,引擎在工程的根目录提供了一个CustomCloudAssets目录,只需要在打包微信小游戏前拷贝到该目录下,所有文件也会一起上传到UOS CDN上。 该目录下的文件将在点击Auto Streaming → Cfg & Publish → Upload to UOS CDN时随其他资源文件一起上传到UOS CDN,文件的下载地址为: 如因其他原因无法使用AutoStreaming.CustomCloudAssetsRoot字段,可以选择手动拼接URL,拼接规则为 {Cfg & Publish页面可复制的Auto Streaming Path} + "/CUS/" + {自定义文件名}

因此可以在打包AB的逻辑后添加代码,或使用接口IPostprocessBuildWithReport的OnPostprocessBuild()方法, 来实现这些文件的自动拷贝。

建议只拷贝需要的文件,忽略.meta 和 .manifest等文件。 过多的文件数量会使得上传等待时间明显变长,影响工作效率。

AutoStreaming默认AB放在CustomCloudAssets/CustomAB目录下上传,放置在其他文件夹,需要在微信小游戏界面的"Bundle Path Identifier"属性中添加值以保证微信下载缓存有效,可前往 使用微信资源缓存 了解细节。

Addressable设置

CustomCloudAssets目录同时也支持Addressables,可以将Addressables打包出来的文件直接放到CustomCloudAssets或其子目录下,并将Addressables的RemoteLoadPath设置为:

{Cfg & Publish页面可复制的Auto Streaming Path} + "/CUS/" + {自定义子目录}

从UOS下载文件:

UOS CDN支持以下形式的资源下载链接格式:

按 Badge:

https://a.unity.cn/client_api/v1/buckets/{bucketId}/release_by_badge/{badgeName}/entry_by_path/content/?path={filepath}
https://a.unity.cn/client_api/v1/buckets/{bucketId}/release_by_badge/{badgeName}/content/{filepath}

按 Release:

https://a.unity.cn/client_api/v1/buckets/{bucketId}/releases/{releaseId}/entry_by_path/content/?path={filepath}
https://a.unity.cn/client_api/v1/buckets/{bucketId}/releases/{releaseId}/content/{filepath}

由于unity引擎以及小游戏平台在缓存下载文件,计算缓存id时会把"?"之后的部分丢弃,因此建议使用不带"?"的url格式访问UOS CDN的文件,如果需要使用其他CDN,也需要注意这一点。

在C#代码中,我们提供了字段AutoStreaming.CustomCloudAssetsRoot,用于拼接下载url。该字段对应于上传文件的CustomCloudAssets目录,其值为 {打包小游戏时 Cfg & Publish页面的Auto Streaming Path} + "/CUS"

StreamingAssets文件夹

在微信小游戏中,Application.StreamingAssets = {小游戏转换面板-游戏资源CDN} + "/StreamingAssets"。 使用AutoStreaming和UOS CDN时, 访问StreamingAssets文件夹下的资源,依旧可以使用Application.StreamingAssets作为根路径。 如果使用了其他CDN,或者StreamingAssets文件上传位置不在设置的游戏资源CDN下,则需要用户修改下载Url。

AssetBundle文件

使用AutoStreaming 和 UOS CDN的情况下,C#代码中下载AB的URl根路径为:

AutoStreaming.CustomCloudAssetsRoot+ {自定义子目录/CustomAB} + {带Hash的AB文件名}

其他情况下,需要用户自行管理下载地址。

Addressables文件

由Addressables package自行管理,需要在更换RemoteLoadPath后重新打包才能生效。