您的位置:首页 > 移动开发 > Unity3D

Unity3D 学习笔记7 —— 获取热更新资源文件的MD5码

2016-04-09 23:10 676 查看
在之前的文章中,我们提到了用ulua的热更新框架,其中最后提及了通过文件MD5码比对来判断文件是否更新,假如MD5码不一致则可以判定文件发生了变化,所以需要进行更新。因此,我们需要为那些能够进行热更新的文件生成对应的MD5码,每个文件都对应唯一的一个MD5码。

生成步骤:

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.从服务器下载更新文件列表中包含的文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: