public static bool IsPathInclude(string path, H3DAssetChecker checker) { if (checker.ExcludePath != "") { var excludePaths = GetPathList(checker.ExcludePath); foreach (var p in excludePaths) { if (path.StartsWith(p)) { return(false); } } } if (checker.FilterPath == "") { return(true); } var includePaths = GetPathList(checker.FilterPath); foreach (var p in includePaths) { if (path.StartsWith(p)) { return(true); } } return(false); }
//对 "Assets/" 目录下的所有资源进行检查 public void TotalCheck() { if (H3DAssetCheckerConfig.GetInstance().isAssetCheckerOff) { return; } var pathCheckerList = H3DAssetCheckerFramework.GetInstance().GetAssetPathCheckerList(); var assetCheckerList = H3DAssetCheckerFramework.GetInstance().GetAssetCheckerList(H3DAssetChecker.ResouceType.ALL); var assetPaths = AssetDatabase.GetAllAssetPaths(); foreach (var path in assetPaths) { if (ResourceManageToolUtility.PathIsFolder(path)) { continue; } UnityEngine.Object asset = AssetDatabase.LoadAssetAtPath(path, typeof(object)); H3DAssetChecker.ResouceType resType = H3DAssetChecker.QueryAssetResType(asset); var assetImporter = AssetImporter.GetAtPath(path); bool needImport = false; bool firstImport = !HasAssetImportMark(assetImporter); if (firstImport) {//若为第一次导入则加入标记 MarkAssetImporterAsAlreadyImported(assetImporter); needImport = true; } foreach (var checker in pathCheckerList) { if (H3DAssetCheckerUtil.IsPathInclude(path, checker)) { checker.Check(asset, assetImporter, path, firstImport, ref needImport); } } foreach (var checker in assetCheckerList) { if ( checker.ResType == resType && H3DAssetCheckerUtil.IsPathInclude(path, checker) ) {//使用符合资源类型的checker进行检查 checker.Check(asset, assetImporter, path, firstImport, ref needImport); checker.PostCheck(asset, assetImporter, path, firstImport, ref needImport); } } if (needImport) { AssetDatabase.ImportAsset(path); } } AssetDatabase.Refresh(); }