【Unity技术摘录】获取热更新资源文件的MD5码

【参考原文】河乐不为-Unity3D 学习笔记7 —— 获取热更新资源文件的MD5码

概要

在热更新时通过文件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"); 

游戏检查更新的具体步骤

  1. 通过请求服务器获取到服务器的MD5码配置文件
  2. 获取本地的MD5码配置文件
  3. .逐个比对每个文件的MD5码
  4. 统计MD5码不一致的文件列表
  5. 从服务器下载更新文件列表中包含的文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值