生成了对应的热更文件后,需要从服务器,下载新版,热更文件,在进入游戏的时候,完成替换、加载即可; 参考Apache服务器配置和使用; 对应,服务器配置文件,自定义的数据结构,是由版本Version和Patches补丁包数组,构成;

热更包内,对应的Patch.xml补丁包,配置文件,逻辑结构

服务器的配置文件ServerInfo.xml,所在路径

前后的xml结构,是保持一致的,其中Pathces Version,对应的,就是热更版本号,而Des字段,就是对应该热更的描述信息

patch补丁中间包裹着的字段,直接从Patch.xml补丁包的配置文件,复制粘贴过来即可

从热更包,再复制粘贴,对应改动的,ab包到对应的路径

确认,Apache服务器的bin文件夹,存在可执行文件httpd.exe

按住Shift,右键,点击、打开

执行指令,开启服务器

1
 .\httpd.exe

输入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,表现正常