1.什么是Xlua热更框架策略
略
2.为什么要有Xlua热更框架策略
略
3.如何使用Xlua热更框架策略,使用Xlua热更框架策略的不同方案比较
热更包含代码热更、表格数据热更和美术资源热更三部分。
- 使用MD5效验文件版本,删除不在版本控制内的资源,如有变动替换并下载新的资源。
- 代码热更:替换lua脚本后,开启lua解释器。
- 表格数据热更:热更完毕后,替换表格数据资源。
- 美术资源分为图片资源和模型资源热更。图片资源热更:热更完毕后进入游戏。模型资源热更:热更完毕后进入游戏。
3.1 MD5校验
- 通过请求服务器获取到服务器的MD5码配置文件
- 获取本地的MD5码配置文件
- 逐个比对每个文件的MD5码
- 统计MD5码不一致的文件列表
- 从服务器下载更新文件列表中包含的文件
4.Xlua热更框架策略源码实现
略
5.Xlua热更框架策略关键点,重要节点,疑难杂症场景
5.1 MD5算法的实现
MD5消息摘要算法。算法输入为任意长度的消息,输出为一个128位的消息摘要。
MD5的实现原理:
- 填充:将输入信息进行512求余分组,若不等于448,那么进行填充 1 和0,一个1 N个0。最后的数据就为N*512+448
- 记录信息长度:将得到的信息用64位存储填充之前的信息长度,这样448+64=512,总信息为N+1个512
- 以四个常数ABCD与每组512位进行函数运算,第一组的结果作为第二组的计算参数,加上第二组的初始值算出第二组的结果,最后输出的ABCD,4组32位的常数。拼接得到MD5码
5.2 几个关键目录streamingAsset什么的
Application.dataPath (Read Only) :其实就是平常时候看到的Assets目录
Application.streamingAssetsPath (Read Only)
Application.persistentDataPath (Read/Write)
在ios端和Android端Application.streamingAssetsPath只能读取而不能修改,一般在这个文件夹里面存放一些二进制文件(比如AssetBundle,mp4等一些文件),这些文件在打包时不会被压缩(最好只放少量的文件,而且要做好加密工作,不然别人一解压就得到了里面的内容了),因此读取的速度是比较快的。
在Android端读取这个文件夹时,只能使用WWW进行异步读取,而在ios和pc上则可以使用File类及其他同步读取方式。Application.persistentDataPath可以在运行后进行读写,由于有了这个特性,我们可以将需要热更的文件放在里面(当然不能直接放,可以将一些文件放在Application.streamingAssetsPath,在运行后再将Application.streamingAssetsPath里面的文件移动到Application.persistentDataPath下,再进行热更。也可以完全从服务器上下载后存放在Application.persistentDataPath。)。
同样的在Android端读取这个文件夹时,只能使用WWW进行异步读取,而在ios和pc上则可以使用File类及其他同步读取方式。
6.引用
超详细的Unity3D热更新框架,附示例链接,小白也能看的懂_Tel17610887670的博客-CSDN博客_unity 热更新框架