Unity 游戏开发技术杂谈 (一):为文件生成 MD5 值

如果要做游戏的热更新(其实不光是Unity,其他游戏也需要),就需要此项功能。

服务器资源列表更新后,客户端联网后需要检验服务器端的资源情况。如果文件名相同但MD5值发生了改变,表明该文件被更新,将其加入待更新的列表。如果有不同的文件名,表明是新的资源,像新的地图什么的,也需要加入列表的。检查完毕后从服务器下载资源,然后替换本地文件或者加入新的文件。当然,我这里也许说的很不全面,希望大侠们帮我纠正,小弟感激不尽!

本章简单写了一下文件的MD5值生成方法。欢迎交流!

 

[csharp] view plaincopy
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using System.Security.Cryptography;  
  5. using System.IO;  
  6. namespace GetMD5  
  7. {      
  8.     class Program  
  9.     {  
  10.         public static string getFileHash(string filePath)  
  11.         {             
  12.             try  
  13.             {  
  14.                 FileStream fs = new FileStream(filePath, FileMode.Open);  
  15.                 int len = (int)fs.Length;  
  16.                 byte[] data = new byte[len];  
  17.                 fs.Read(data, 0, len);  
  18.                 fs.Close();  
  19.                 MD5 md5 = new MD5CryptoServiceProvider();  
  20.                 byte[] result = md5.ComputeHash(data);  
  21.                 string fileMD5 = "";  
  22.                 foreach (byte b in result)  
  23.                 {  
  24.                     fileMD5 += Convert.ToString(b, 16);  
  25.                 }  
  26.                 return fileMD5;     
  27.             }  
  28.             catch (FileNotFoundException e)  
  29.             {  
  30.                 Console.WriteLine(e.Message);  
  31.                 return "";  
  32.             }                                   
  33.         }  
  34.         static void Main(string[] args)  
  35.         {  
  36.             string md5 = getFileHash("E:\\Myweb\\cubetest.unity3d");  
  37.             string b = getFileHash("E:\\Myweb\\testscene.unity3d");  
  38.             Console.WriteLine(md5);  
  39.             Console.WriteLine(b);  
  40.             Console.ReadKey();  
  41.               
  42.         }  
  43.     }  
  44. }  

Для получения подробной информации о возможностях оптимизации компилятора обратитесь к нашему Уведомлению об оптимизации.