资源部署与缓存
在转换完成后,会在导出路径下生成如下目录
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目录
资源服务器注意事项
- 针对txt文件进行开启Brotli或gzip压缩,首资源包有非常高的压缩率
- 小游戏资源下载并发数为10,超过时底层自动排队
- 单个请求文件最大不超过100MB,超时默认为60s(理论最大值,实际游戏永远不要让单个文件这么大,考虑到玩家平均下载带宽,建议单文件2~5MB以内)
- 网络安全域名、跨域、SSL等问题请参考文档网络通信适配
资源更新说明
请注意!!! bundle的配置文件,比如aa的
setting.json
和catalog.json
,以及AssetBundles
打包生成的配置文件通常没有带上hash,为了避免新版本发布时由于cdn缓存导致加载到旧版本资源,需要避免这些文件使用缓存。通常有以下两种方式避免。
- 每次发新版本更换cdn路径,比如
version1/xxxx
,version2/xxxx
- 不希望被缓存的文件,源站或者cdn加上不允许缓存的HTTP头,如
no-cache
,请自行查询对应cdn服务商文档进行设置
同时,由于通过HTTP请求的资源会自动缓存,不希望被缓存的文件请添加到缓存忽略目录,具体可阅读后续资源缓存规则文档
除非了解小程序更新机制,请勿删除旧版本资源,否则可能导致旧版本游戏的用户运行报错,具体请移步版本更新
资源缓存
这里主要讲UnityLoader的资源缓存策略。
资源缓存规则
请阅读资源缓存