- 项目平常需要对线上一些图片资源修正,所以需要热更图片功能。
- 远端入口新增字段配json文件
{
"1.1.22030303":{
"sprite":
{
"assets/ui/common/images/acient_gold.png" : "https://aaaa.png",
"assets/ui/common/images/bbb.png" : "https://bbb.png",
},
"texture":
{
"assets/ui/common/images/cccc.png" : "https://cccc.png",
"assets/ui/common/images/dddd.png" : "https://dddd.png",
}
}
}
-
新增一个hotfix_img_mgr.lua,在config.lua require之后再初始化,方便后续热更调整
3.1. 初始化时异步检查下载热更配置,注意容错:配置无,json.decode异常,配置缺"texture"等。
3.2. 配置检查完异步下载图片资源,并缓存,下载超时时间根据图片大小(GetFileSizeWithUrl)设置超时时间,比如一个图1M,算较差情况100k每秒,1024/100=10s超时
3.3. 旧包没导出’UnityWebRequestTexture‘ 接口,先加到导出但不用(后面再说),考虑旧版使用 UnityEngine.WWW.texture 下载,下载完btyes可以缓存本地记录,避免重复下载
3.4. 加接口支持外部取图片,避免特殊情况需要手动获取热更图片,比如新增图片或修改材质图片 -
res_mgr.lua 加载图片的时候,先查 hotfix_img_mgr 有没有对应路径缓存图片,注意hotfix_img_mgr可能为nil(即在热更前调用了),要容错。
4.1. 如果有热更缓存就直接使用,要是下载中就先不管了,等玩家手动刷新界面
4.2. 注意检查缓存同时检查远端配置是否有,避免出现远端已经删除这个热更图片,但本地有缓存就还是用了缓存图片 -
加数数上报埋点,1.准备下载哪些图片 2.开始下载某个图片 3.下载完成某个图片
-
可以考虑加GM检查打印当前热更的图片情况。