Skip to content

资源部署与缓存

在转换完成后,会在导出路径下生成如下目录

bash
.
├── minigame
└── webgl
  • webgl目录为游戏对应的webgl版本。
  • minigame目录为转化后的小游戏代码。

其中webgl目录结构如下:

bash
.
├── 01367b188873c923.webgl.data.unityweb.bin.txt
├── Assets
│   ├── 15032.wav
│   ├── Audio
│   └── Textures
├── Build
│   ├── UnityLoader.js
│   ├── webgl.data.unityweb
│   ├── webgl.json
│   ├── webgl.wasm.code.unityweb
│   ├── webgl.wasm.framework.unityweb
│   └── webgl.wasm.symbols.unityweb
├── StreamingAssets
│   └── AssetBundles
├── index.html
└── texture-config.js

资源部署

导出目录中,webgl目录如下三个文件和目录是可能需要远程部署的资源:

bash
.
├── 01367b188873c923.webgl.data.unityweb.bin.txt
├── Assets
├── StreamingAssets

首资源包

首资源包即01367b188873c923.webgl.data.unityweb.bin.txt,包含Unity builtin + 勾选的导出场景 + Resources资源。 注意:加载方式取决于导出选项中的首包资源加载方式。同时由于小游戏总包体不能超过20MB,实际首包资源加载方式会根据包体决定,更多信息可查看UnityLoader-首包资源加载方式

  • 小游戏分包:因需要统计总包体大小,当导出时wasm代码brotli压缩正常的前提下,如果wasm代码+首包资源小于20MB,可使用"小游戏包内"加载,此时不需要将首包资源部署到服务器
  • CDN:当不使用小游戏分包时,需要部署到服务器。

Assets

如果有用到纹理压缩,导出插件自动生成。将此目录部署到服务器即可

StreamingAssets

AssetBundle和Addressables资源目录。 如果是用的AA,构建时默认打包到StreamingAssets目录下。但如果是用的AB,或者自定义了bundle的生成目录,需要将bundle移动到StreamingAssets目录

资源服务器注意事项

  1. 针对txt文件进行开启Brotli或gzip压缩,首资源包有非常高的压缩率
  2. 小游戏资源下载并发数为10,超过时底层自动排队
  3. 单个请求文件最大不超过100MB,超时默认为60s(理论最大值,实际游戏永远不要让单个文件这么大,考虑到玩家平均下载带宽,建议单文件2~5MB以内)
  4. 网络安全域名、跨域、SSL等问题请参考文档网络通信适配

资源更新说明

请注意!!! bundle的配置文件,比如aa的setting.jsoncatalog.json,以及AssetBundles打包生成的配置文件通常没有带上hash,为了避免新版本发布时由于cdn缓存导致加载到旧版本资源,需要避免这些文件使用缓存。通常有以下两种方式避免。

  1. 每次发新版本更换cdn路径,比如version1/xxxx,version2/xxxx
  2. 不希望被缓存的文件,源站或者cdn加上不允许缓存的HTTP头,如no-cache,请自行查询对应cdn服务商文档进行设置

同时,由于通过HTTP请求的资源会自动缓存,不希望被缓存的文件请添加到缓存忽略目录,具体可阅读后续资源缓存规则文档

除非了解小程序更新机制,请勿删除旧版本资源,否则可能导致旧版本游戏的用户运行报错,具体请移步版本更新

资源缓存

这里主要讲UnityLoader的资源缓存策略。

资源缓存规则

请阅读资源缓存

Released under the MIT License.