ファイルが重複した参照を存在するかどうかをユニティクエリ

コア:MD5.ComputeHashと重複するファイルがあるかどうかを判断します

AssetImporter(資源輸入)でのファイルの種類をフィルタリングします

System.Collectionsを使用しました。
UnityEngineを使用しました。
UnityEditorを使用しました。
System.Security.Cryptographyを使用しました。
システムを使用しました。
System.IOを使用しました。
System.Collections.Genericを使用しました。

パブリッククラスCheckRepeatElement { 


	[のMenuItem( "ツール/查找重复贴图")] 
	静的ボイドReportTexture()
	{ 
		辞書<文字列、文字列> md5dic =新しい辞書<文字列、文字列>(); 
        //在資産/リソース目录下发现所有后缀为perfabs文件的GUIDの
        文字列[]パス= AssetDatabase.FindAssets( "T:プレハブ"、新たな文字列[] { "資産/リソース"})。

		foreachの(パス内のvar prefabGuid){ 
			ストリングprefabAssetPath = AssetDatabase.GUIDToAssetPath(prefabGuid)。 
            再帰//ルックアップ依存
			;文字列は、[] =ザはAssetDatabase.GetDependencies(trueにprefabAssetPathを)依存
			(; Iはdepend.Lengthを<; I = 0をint型Iは++)のために{ 
				;列assetPathザは= [I]依存
				AssetImporter = AssetImporter.GetAtPath輸入(assetPath); 
				//満たすために、モデルとマップリソース
				(輸入がTextureImporter ||輸入がある場合 ModelImporter){ 
                    テキストが//接続パスとリソースのパスを追加
					文字列GetMD5Hash = MD5(Path.Combine(Directory.GetCurrentDirectory()、assetPath))を、
					文字列のパス、
				
					{IF(md5dic.TryGetValue(MD5、OUTパス)!)
						md5dic [MD5] = assetPath; 
					}そうでなければ{ 
						IF(!= assetPathパス){ 
							Debug.LogFormat( "!} {0} {リソース重複1"、パス、assetPath); 
						} 
					}
				} 
			} 
		} 
	} 
	静的ストリングGetMD5Hash(ストリングファイルパス)
	{ 
		MD5 MD5 =新しいMD5CryptoServiceProvider()。
		。BitConverter.ToString(md5.ComputeHash(File.ReadAllBytes(filePathに)))を交換( " - "、 "")を返す.ToLowerを(); 
	} 
}

  

おすすめ

転載: www.cnblogs.com/chenggg/p/11616585.html