Unity资源热更及代码热更_第四章
生成了对应的热更文件后,需要从服务器,下载新版,热更文件,在进入游戏的时候,完成替换、加载即可; 参考Apache服务器配置和使用; 对应,服务器配置文件,自定义的数据结构,是由版本Version和Patches补丁包数组,构成;
热更包内,对应的Patch.xml补丁包,配置文件,逻辑结构
服务器的配置文件ServerInfo.xml,所在路径
前后的xml结构,是保持一致的,其中Pathces Version,对应的,就是热更版本号,而Des字段,就是对应该热更的描述信息
patch补丁中间包裹着的字段,直接从Patch.xml补丁包的配置文件,复制粘贴过来即可
从热更包,再复制粘贴,对应改动的,ab包到对应的路径
确认,Apache服务器的bin文件夹,存在可执行文件httpd.exe
按住Shift,右键,点击、打开
执行指令,开启服务器
|
|
输入localhost
,测试,服务器正常开启,出现这界面,即可
下载路径,PC、安卓、ios等不同平台,会有所不同,参考【Unity】数据持久化路径Application.persistentDataPath; 设定上,ab包,下载存到persistentDataPath路径下的Download文件夹即可; 还有俩xml配置文件,存放到persistentDataPath根目录;
在热更ui界面的Awake函数,注释直接开始的逻辑,调用HotFix的函数接口,开始调用,热更相关
网络正常的情况下,会调用CheckVersion函数接口,检查和对比,服务器与本地,版本信息
CommonConfirm预制体,是提示热更相关的
ReadVersion函数接口,是读取之前,打基础包的Version版本信息
也是项目内,打包相关的,配置信息
对应的是SaveVersion函数接口,和打包调用
读取,对应服务器地址的xml文件,网络正常的情况下,XmlDeserialize解序列化,得到对应的ServerInfo 服务器相关配置信息
获取到,服务器的ab文件,对应的md5码,和本地的,进行对比,如果不等,或者本地不存在该ab文件,说明是修改的资源,或者新增的资源; 分别加到,几个下载相关的,数据容器,m_DownLoadList、m_DownLoadDic、m_DownLoadMD5Dic即可;
回顾一下,传参是,判断bool布尔的Action回调委托hotCallBack
如果回调不为空,bool的传参,就是下载列表,是否大于0
回到hotfix界面,这个bool传参,如果为true,也就是有等待下载的ab文件,就会调用,OpenCommonConfirm函数接口,打开“确认下载界面”
调用的,就是CommonConfirm这个预制体
包体大小,也是直接调用Sum函数接口,计算size总数即可
运行游戏,正常
完成下载后,进入游戏,加载的,就会是,热更包修改之后的,图片了
可以看到,也是下载到persistentDataPath可持久化路径,设定好的DownLoad文件夹了
后续再进入游戏,也都是加载,热更之后的ab; 因为每次都会调用,GetHotAB函数接口,往m_HotFixDic热更的,字典容器,添加对应的Patch补丁信息; 打断点可知,确实就是,对应修改的俩ab包
资源加载,会调用ComputeABPath函数接口,从m_HotFixDic字典容器中,拿到对应的补丁包,完成热更资源的替换
打断点,重新进入游戏,是通过AssetBundleManager管理器的LoadAssetBundle函数接口,完成ab包的替换、调用
关了服务器,测试一下,网络异常的逻辑判断
检查版本的时候,存在,服务器列表获取,错误回调
注册绑定
运行游戏,网络异常,逻辑正常
修改一下逻辑,改回加载本地ab
重新运行游戏,不连服务器,加载本地ab,表现正常