Unity3D 学习笔记7 —— 获取热更新资源文件的MD5码
2016-04-09 23:10
676 查看
在之前的文章中,我们提到了用ulua的热更新框架,其中最后提及了通过文件MD5码比对来判断文件是否更新,假如MD5码不一致则可以判定文件发生了变化,所以需要进行更新。因此,我们需要为那些能够进行热更新的文件生成对应的MD5码,每个文件都对应唯一的一个MD5码。
生成步骤:
1.读取文件流
2.读取文件流中的字节数据
3.通过MD5接口生成MD5码(获得的是一个Hash字节数组)
4.将步骤3获得的Hash字节数组转换为字符串
关键代码如下:
将所有文件的MD5码都写到一个文本.txt文件中,此即为热更新文件的配置文件,每次上传新版本到服务器时,将这份文件也存放到服务器中。
游戏检查更新的具体步骤如下:
1.通过请求服务器获取到服务器的MD5码配置文件
2.获取本地的MD5码配置文件
3.逐个比对每个文件的MD5码
4.统计MD5码不一致的文件列表
5.从服务器下载更新文件列表中包含的文件
生成步骤:
1.读取文件流
2.读取文件流中的字节数据
3.通过MD5接口生成MD5码(获得的是一个Hash字节数组)
4.将步骤3获得的Hash字节数组转换为字符串
关键代码如下:
public static string getFileHash(string filePath) { try { FileStream fs = new FileStream(filePath, FileMode.Open); int len = (int)fs.Length; byte[] data = new byte[len]; fs.Read(data, 0, len); fs.Close(); MD5 md5 = new MD5CryptoServiceProvider(); byte[] result = md5.ComputeHash(data); string fileMD5 = ""; foreach (byte b in result) { fileMD5 += Convert.ToString(b, 16); } return fileMD5; } catch (FileNotFoundException e) { Console.WriteLine(e.Message); return ""; } }调用的时候通过填写制定文件的完整目录,即可获得对应文件的MD5码:
string md5 = getFileHash("E:\\MyPro\\cubetest.unity3d");
将所有文件的MD5码都写到一个文本.txt文件中,此即为热更新文件的配置文件,每次上传新版本到服务器时,将这份文件也存放到服务器中。
游戏检查更新的具体步骤如下:
1.通过请求服务器获取到服务器的MD5码配置文件
2.获取本地的MD5码配置文件
3.逐个比对每个文件的MD5码
4.统计MD5码不一致的文件列表
5.从服务器下载更新文件列表中包含的文件
相关文章推荐
- [Unity] Unity项目架构设计与开发管理 - 视频观看记录
- 笨木头的Unity3d常用操作介绍
- 笨木头的Unity3d地形介绍
- unity3d Billboard(物体始终面相摄像机)
- Unity3D中使用Leap Motion进行手势控制
- unity再战PBR材质流程与材质制作实践
- 非常详细的测试unity与android之间的通讯操作
- Unity 使用git 怎么设置
- Unity: “NullReferenceException: Object reference not set to an instance of an object”的可能解決方法
- [Unity游戏开发]向量在游戏开发中的应用(三)
- Unity组件的基类单例模式
- Unity3D 学习笔记6 ——协程
- Unity协程(Coroutine)原理深入剖析
- Unity3d发布WebGL 部署在IIS
- Unity frameIndex = (int)(timer / (1f / framePerSecond));
- unity源码解析Material
- Disunity_V0.5.0 提取Unity生成的APK资源的后续探索
- [Unity3D]Unity3D游戏开发之使用EasyTouch虚拟摇杆控制人物移动
- Unity删除工程记录
- Unity3D中继承在ios上的UIApplicationDelegate