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