リソースパックで団結するとき計算されたハッシュの簡単な概要

1は、一般的にコンピューティングリソースのハッシュ必要時に考慮すべき:リソース+リソースメタ、メタ依存関係+依存

図2に示すように、一般的には、結果を暗号化する必要がある場合、ハッシュ計算資源組み込みC#MD5を直接暗号化することができます

(構造は完璧ではない、使用することを学ぶ)、次のように特定の実装、コードは次のとおりです。

1  使用してシステムを。
2  使用System.IOと、
3  使用System.Collections.Genericと、
4  使用UnityEditorと、
5  使用UnityEngineと、
6  使用System.Security.Cryptographyと、
7  使用System.Textのを。
8  
9  パブリック クラステスト
 10  {
 11      [のMenuItem(" BuildTool /ラグ" )]
 12      静的 ボイドLugsTest()
 13      {
 14          DEBUG.LOG(ComputeAssetHash(" 資産/ UI /プレハブ/ ui_login / ui_login.prefab " ));
 15      }
 16  
17。     静的 ストリング ComputeAssetHash(assetPath)が
 18である     {
 19          IF(!File.Exists(assetPath))
 20が             リターン NULL ;
 21は 
22である          リスト< バイト > =リストの新しい新しいリスト< バイト > ();
 23は、 
24          // リソースファイルとメタバイト配列読ん
25          list.AddRange(GetAssetBytes(assetPathを));
 26は 
27          //リソースファイルの依存関係とメタバイト配列(リソースの依存関係も、本質的にパス)を読み取る
28          のString [] =補足AssetDatabase.GetDependencies(assetPath);
 29          INT I = 0、= IMAX dependencies.Length。 ++; Iは、IMAXを< 私は)
 30              ; list.AddRange(GetAssetBytes(依存性[I]))
 31れる 
32          // その後、他のリソースの依存関係が存在する場合、それは、リスト内の対応するバイト配列に読み込まれる必要があり、かつ次にハッシュコードを計算
 33は 
34である         // ハッシュリソースを返す
35          リターンComputeHash(List.toArray());
 36      }
 37  
38である     静的 バイト [] GetAssetBytes(文字列assetPath)
39      {
 40          であれば(!File.Exists(assetPath))
 41              リターン ヌル42  
43          一覧< バイト >リスト= 新しいリスト< バイト > ();
44  
45          のvar assetBytes =のFile.ReadAllBytes(assetPath)。
46          list.AddRange(assetBytes)。
47  
48          文字列 metaPath = assetPath + " .META " 49件         のvar metaBytes =のFile.ReadAllBytes(metaPath)。
50          list.AddRange(metaBytes)。
51  
52          リターンlist.ToArray()。
53      }
 54  
55      静的 MD5のMD5 = NULL ;
56      静的MD5 MD5
 57      {
 58は、         取得し
59          {
 60の             場合ヌル == MD5)
 61                  MD5 = MD5.Create()。
62              リターンMD5;
63          }
 64      }
 65  
66      静的 文字列 ComputeHash(バイト[]バッファ)
 67      {
68          であればヌル ==バッファ|| buffer.Length < 1 69              リターン "" 70  
71          バイト []ハッシュ= MD5.ComputeHash(バッファ)
72          StringBuilderのSB = 新規のStringBuilder();
73  
74          のforeachVARの B におけるハッシュ)
 75              sb.Append(b.ToString(" X2 " ));
76  
77          リターンsb.ToString()。
78      }
 79  
80     
81 }

結果は以下の通りであります:

 

おすすめ

転載: www.cnblogs.com/luguoshuai/p/11368052.html