Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
迂街过巷
minigame-unity-webgl-transform
提交
17d19530
M
minigame-unity-webgl-transform
项目概览
迂街过巷
/
minigame-unity-webgl-transform
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
minigame-unity-webgl-transform
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
17d19530
编写于
11月 25, 2021
作者:
J
junkunzhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: 导出配置.bundle缓存规则说明
上级
011ad778
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
91 addition
and
27 deletion
+91
-27
Design/DataCDN.md
Design/DataCDN.md
+74
-12
Design/Transform.md
Design/Transform.md
+10
-9
Design/UsingLoader.md
Design/UsingLoader.md
+7
-6
image/export.png
image/export.png
+0
-0
未找到文件。
Design/DataCDN.md
浏览文件 @
17d19530
# 资源服务器部署注意事项
# 资源部署与缓存
在转换完成后,会在导出路径下生成如下目录
```
bash
.
├── backup
├── minigame
└── webgl
```
-
webgl目录为游戏对应的webgl版本。
-
minigame目录为转化后的小游戏代码。
-
如果使用纹理压缩会生成backup目录用于存放原始纹理。
## 远程部署的资源
其中webgl目录结构如下:
Unity WebGL转换小游戏主要有两个游戏阶段需要下载资源:
-
首资源包
-
按需加载资源
### 首资源包
```
bash
包含:
**Unity builtin + 勾选的导出场景 + Resources**
.
.
├── 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
```
下载方式:小游戏支持“小游戏分包” 与 “CDN”两种方式下载。如果使用“小游戏分包“则需要足够小,因为所有小游戏包体积不能超过
**20MB**
。
### 首资源包
首资源包即
`01367b188873c923.webgl.data.unityweb.bin.txt`
,包含
**Unity builtin + 勾选的导出场景 + Resources**
资源。
注意:加载方式取决于导出选项中的
`首包资源加载方式`
。同时由于小游戏总包体不能超过
**20MB**
,实际首包资源加载方式会根据包体决定,更多信息可查看
[
UnityLoader-首包资源加载方式
](
UsingLoader.md
)
-
小游戏分包:因需要统计总包体大小,当导出时wasm代码brotli压缩正常的前提下,如果wasm代码+首包资源小于20MB,可使用小游戏分包加载,此时
**不需要将首包资源部署到服务器**
。
-
CDN:当不使用小游戏分包时,需要部署到服务器。
###
按需加载资源
###
Assets
包含:AB/AA下载的资源,通常使用LZ4压缩。
如果有用到纹理压缩和微信音频API,导出插件自动生成。将此目录部署到服务器即可
下载方式:需要自行使用
**CDN服务器**
进行托管。
### StreamingAssets
AssetBundle和Addressables资源目录。
如果是用的AA,构建时默认打包到StreamingAssets目录下。但如果是用的AB,或者自定义了bundle的生成目录,需要将bundle移动到StreamingAssets目录
## 资源服务器注意事项
##
#
资源服务器注意事项
1.
针对txt文件进行开启Brotli或gzip压缩,
**首资源包有非常高的压缩率**
1.
针对txt文件进行开启Brotli或gzip压缩,
**首资源包有非常高的压缩率**
2.
CDN服务器开启跨域设置(否则
**iOS可能会出现跨域加载失败**
的情况)
2.
CDN服务器开启跨域设置(否则
**iOS可能会出现跨域加载失败**
的情况)
3.
MP开发者后台为CDN域名添加到"安全域名"
3.
MP开发者后台为CDN域名添加到"安全域名"
4.
小游戏资源下载并发数为10,超过时底层自动排队
4.
小游戏资源下载并发数为10,超过时底层自动排队
5.
单个请求文件最大
**不超过100MB,超时默认为60s**
5.
单个请求文件最大
**不超过100MB,超时默认为60s**
## 资源缓存
这里主要讲UnityLoader的资源缓存策略。
### 资源缓存规则
-
首资源包自动缓存
-
wasm代码自动缓存
-
AB和AA特定情况下缓存
需要注意的是AB和AA的缓存规则
#### AB和AA缓存
如果请求URL包含StreamingAssets,则插件判定为是在下载bundle文件,会自动进行缓存提升二次启动速度。
所以需要自动缓存的文件,可放到StreamingAssets目录下。
但请注意以下几点:
1.
文件名需要带上hash
[
BuildAssetBundleOptions.AppendHashToAssetBundleName
](
https://docs.unity3d.com/ScriptReference/BuildAssetBundleOptions.AppendHashToAssetBundleName.html
)
,以便清理掉该文件的旧缓存。默认32位长度,如果游戏可通过导出选项中
`Bundle名中Hash长度`
来自定义。比如游戏自己计算了crc,可将
`Bundle名中Hash长度`
设置为crc长度。
2.
配置到不自动缓存文件类型中的文件,不会自动缓存,默认值是json,比如addressable打包后生成StreamingAssets/aa/WebGL/catalog.json,这个文件不会自动缓存。
### 资源淘汰规则
由于缓存目录最大不可超过200M,在下载资源包、下载AB包时,若剩余空间不足以缓存,会进行缓存淘汰。目前规则比较简单,如下:
1.
如果所需空间过大,超过最大限制:下载完成后不缓存文件,也不执行清理逻辑,直接返回下载内容。
2.
清理部分文件可以缓存新文件:按最近使用时间从前往后排序清理,直到清理出所需空间。
3.
如果去除hash后是同名文件(相同路径下同名):清理掉旧的资源。
\ No newline at end of file
Design/Transform.md
浏览文件 @
17d19530
...
@@ -19,23 +19,24 @@
...
@@ -19,23 +19,24 @@
其中:
其中:
1.
必须
1.
必须
-
游戏appid:小游戏的appid
-
游戏appid:小游戏的appid
-
游戏资源CDN:首包资源加载方式选择CDN时,需要提供游戏首包资源所在HTTP或CDN地址
-
游戏资源CDN:游戏资源所在HTTP或CDN地址
-
导出路径:转换后文件目录
2.
可选
2.
可选
-
小游戏项目名:开发者工具中展示的小游戏项目名
-
小游戏项目名:开发者工具中展示的小游戏项目名
-
首包资源加载方式:CDN-使用CDN下载首包资源;小游戏分包-使用小游戏代码分包下载资源
-
首包资源加载方式:CDN-使用CDN下载首包资源;小游戏分包-使用小游戏代码分包下载资源
-
AB包CDN地址:用到AB包时需要,地址为StreamingAssets目录的上一级目录
-
加载阶段视频URL:启动需要一定耗时,在启动加载时会循环播放这段视频,视频格式请参考
[
视频规范
](
video.md
)
-
加载阶段视频URL:启动需要一定耗时,在启动加载时会循环播放这段视频,视频格式请参考
[
视频规范
](
video.md
)
-
Assets目录对应CDN地址:使用压缩纹理时,生成的webgl目录下会包含Assets目录,填写Assets目录对应CDN地址
-
启动背景/视频封面图:启动阶段背景图片;如果配置了加载阶段视频URL,则作为视频封面。
-
游戏内存大小:playersetting中memorysize
-
游戏方向:游戏是横屏还是竖屏,可选值参考
[
deviceOrientation
](
https://developers.weixin.qq.com/minigame/dev/reference/configuration/app.html
)
-
游戏方向:游戏是横屏还是竖屏
-
不自动缓存文件类型:游戏资源CDN下不自动缓存的文件类型,具体参见
[
AssetBundle缓存]
](
UsingLoader.md
)
-
Bundle名中Hash长度:自定义AssetBundle名中Hash长度用于缓存控制,具体参见
[
AssetBundle缓存
](
UsingLoader.md
)
-
预下载列表:网络空闲时预下载的资源,
[
使用预下载
](
UsingPreload.md
)
-
SDK功能选项:
[
好友关系链
](
OpenData.md
)
[
音频优化
]
(AudioOptimization.md)
-
调试编译选项
生成目录下 webgl目录为游戏对应的webgl版本,minigame目录为转化后的小游戏代码
。
转换完成后,参照
[
资源部署与缓存
](
DataCDN.md
)
章节进行资源部署,并了解启动Loader在加载资源时的缓存逻辑
。
注意:
注意:
*
若首包资源加载方式选择'小游戏分包',会根据生成的wasm代码包和首包资源大小是否超过20M,若超过还是会使用CDN加载,参考
[
使用Loader进行游游戏加载
](
UsingLoader.md
)
*
若首包资源加载方式选择'CDN',将生成目录下的
`webgl/ProjectName.data.unityweb.bin.txt`
上传至“游戏资源CDN”。您的CDN最好支持Brotli或gzip压缩txt文件,这样能减少网络传输数据和时间。
*
项目使用了小游戏Unity适配插件,若小游戏是第一次使用本插件,在开发者工具会报错提示插件未授权,具体可参考
[
使用Loader进行游游戏加载
](
UsingLoader.md
)
*
项目使用了小游戏Unity适配插件,若小游戏是第一次使用本插件,在开发者工具会报错提示插件未授权,具体可参考
[
使用Loader进行游游戏加载
](
UsingLoader.md
)
*
使用AssetsBundle时,请将资源上传到“AB包CDN地址”
至此,可以在
[
微信开发者工具
](
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
)
打开转化后的小游戏进行预览。
至此,可以在
[
微信开发者工具
](
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
)
打开转化后的小游戏进行预览。
...
...
Design/UsingLoader.md
浏览文件 @
17d19530
...
@@ -90,18 +90,19 @@ let managerConfig = {
...
@@ -90,18 +90,19 @@ let managerConfig = {
### 3.4 资源缓存与淘汰策略
### 3.4 资源缓存与淘汰策略
#### 资源缓存
#### 资源缓存
首包资源和wasm代码会自动缓存。
首包资源和wasm代码会自动缓存。
使用bundle时,插件也会做缓存处理,但插件需根据下载文件名进行处理,因此需要注意:
1.
bundle文件名不可重名,否则同名文件无法使用缓存
#### assetbundle缓存
2.
bundle名需要带上md5
[
BuildAssetBundleOptions.AppendHashToAssetBundleName
](
https://docs.unity3d.com/ScriptReference/BuildAssetBundleOptions.AppendHashToAssetBundleName.html
)
,以便清理掉该文件的旧缓存
如果请求URL包含StreamingAssets,则插件判定为是在下载assetbundle文件,会自动进行缓存提升二次启动速度。
3.
bundle存放路径需要包含StreamingAssets这个path(一般addressable默认打包会放在StreamingAssets/aa/WebGL/WebGL/这个目录下),或者文件名包含.bundle,才能启用缓存
所以需要自动缓存的文件,可放到StreamingAssets目录下。
但请注意以下几点:
1.
文件名需要带上hash
[
BuildAssetBundleOptions.AppendHashToAssetBundleName
](
https://docs.unity3d.com/ScriptReference/BuildAssetBundleOptions.AppendHashToAssetBundleName.html
)
,以便清理掉该文件的旧缓存。默认32位长度,如果游戏可通过导出选项中
`Bundle名中Hash长度`
来自定义。比如游戏自己计算了crc,可将
`Bundle名中Hash长度`
设置为crc长度。
2.
配置到不自动缓存文件类型中的文件,不会自动缓存,默认值是json,比如addressable打包后生成StreamingAssets/aa/WebGL/catalog.json,这个文件不会自动缓存。
#### 资源淘汰
#### 资源淘汰
由于缓存目录最大不可超过200M,在下载资源包、下载AB包时,若剩余空间不足以缓存,会进行缓存淘汰。目前规则比较简单,如下:
由于缓存目录最大不可超过200M,在下载资源包、下载AB包时,若剩余空间不足以缓存,会进行缓存淘汰。目前规则比较简单,如下:
1.
如果所需空间过大,超过最大限制:下载完成后不缓存文件,也不执行清理逻辑,直接返回下载内容。
1.
如果所需空间过大,超过最大限制:下载完成后不缓存文件,也不执行清理逻辑,直接返回下载内容。
2.
清理部分文件可以缓存新文件:按最近使用时间从前往后排序清理,直到清理出所需空间。
2.
清理部分文件可以缓存新文件:按最近使用时间从前往后排序清理,直到清理出所需空间。
> 因为文件解压只能解压到用户目录,所以,若压缩文件过大,无法解压到用户目录时,会返回失败。
### 3.5 其他可配置参看
### 3.5 其他可配置参看
...
...
image/export.png
查看替换文件 @
011ad778
浏览文件 @
17d19530
270.4 KB
|
W:
|
H:
196.9 KB
|
W:
|
H:
2-up
Swipe
Onion skin
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录