コア: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を(); } }