/// <summary> // 递归处理文件夹下所有Asset 文件 /// </summary> /// <param name="folderPath">Asset目录下文件夹</param> private static void AutoGenAssetNameInFolder(string folderPath, bool useFolderName) { if (folderPath == null) { Log.w("Folder Path Is Null!"); return; } Log.i("Start Set Asset Name. Folder:" + folderPath); string workPath = EditorUtils.AssetsPath2ABSPath(folderPath); //EditUtils.GetFullPath4AssetsPath(folderPath); string assetBundleName = EditorUtils.AssetPath2ReltivePath(folderPath).ToLower(); //EditUtils.GetReltivePath4AssetPath(folderPath).ToLower(); assetBundleName = assetBundleName.Replace("resources/", ""); //处理文件 var filePaths = Directory.GetFiles(workPath); for (int i = 0; i < filePaths.Length; ++i) { if (!AssetFileFilter.IsAsset(filePaths[i])) { continue; } string fileName = Path.GetFileName(filePaths[i]); string fullFileName = string.Format("{0}/{1}", folderPath, fileName); AssetImporter ai = AssetImporter.GetAtPath(fullFileName); if (ai == null) { Log.e("Not Find Asset:" + fullFileName); continue; } else { if (useFolderName) { ai.assetBundleName = assetBundleName + ".bundle"; } else { ai.assetBundleName = string.Format("{0}/{1}.bundle", assetBundleName, PathHelper.FileNameWithoutSuffix(fileName)); } } //ai.SaveAndReimport(); //Log.i("Success Process Asset:" + fileName); } //递归处理文件夹 var dirs = Directory.GetDirectories(workPath); for (int i = 0; i < dirs.Length; ++i) { string fileName = Path.GetFileName(dirs[i]); fileName = string.Format("{0}/{1}", folderPath, fileName); AutoGenAssetNameInFolder(fileName, useFolderName); } }
private static void ProcessTableConfig(AssetDataTable table, string folder) { AssetDataPackage group = null; DirectoryInfo direInfo = new DirectoryInfo(folder); FileInfo[] fileInfos = direInfo.GetFiles(); if (fileInfos == null || fileInfos.Length == 0) { return; } for (int i = 0; i < fileInfos.Length; ++i) { FileInfo info = fileInfos[i]; if (AssetFileFilter.IsConfigTable(info.FullName)) { string md5 = GetMD5HashFromFile(info.FullName); long buildTime = DateTime.Now.Ticks;//info.LastWriteTime.Ticks; table.AddAssetBundleName(ProjectPathConfig.tableFolder + info.Name, null, md5, (int)info.Length, buildTime, out group); } } table.Dump(); }
private static void CollectABInFolder(string folderPath, Dictionary <string, int> builderData) { if (folderPath == null) { Log.w("Folder Path Is Null."); return; } string workPath = EditorUtils.AssetsPath2ABSPath(folderPath); var filePaths = Directory.GetFiles(workPath); for (int i = 0; i < filePaths.Length; ++i) { if (!AssetFileFilter.IsAsset(filePaths[i])) { continue; } string fileName = Path.GetFileName(filePaths[i]); string fullFileName = string.Format("{0}/{1}", folderPath, fileName); AssetImporter ai = AssetImporter.GetAtPath(fullFileName); if (ai == null) { Log.w("Not Find Asset:" + fullFileName); continue; } else if (!string.IsNullOrEmpty(ai.assetBundleName)) { RecordNewAB(ai.assetBundleName, builderData); } } //递归处理文件夹 var dirs = Directory.GetDirectories(workPath); for (int i = 0; i < dirs.Length; ++i) { string fileName = Path.GetFileName(dirs[i]); fileName = string.Format("{0}/{1}", folderPath, fileName); CollectABInFolder(fileName, builderData); } }
private static void RemoveInvalidAssetBundleInner(string absPath, AssetDataTable table) { string[] dirs = Directory.GetDirectories(absPath); if (dirs != null && dirs.Length > 0) { for (int i = 0; i < dirs.Length; ++i) { RemoveInvalidAssetBundleInner(dirs[i], table); } } string[] files = Directory.GetFiles(absPath); if (files != null && files.Length > 0) { for (int i = 0; i < files.Length; ++i) { string p = AssetBundlePath2ABName(files[i]); if (!AssetFileFilter.IsAssetBundle(p)) { continue; } if (table.GetABUnit(p) == null) { File.Delete(files[i]); File.Delete(files[i] + ".meta"); File.Delete(files[i] + ".manifest"); File.Delete(files[i] + ".manifest.meta"); Log.e("Delete Invalid AB:" + p); } } files = Directory.GetFiles(absPath); if (files == null || files.Length == 0) { Directory.Delete(absPath); } } else { Directory.Delete(absPath); } }
private ABState VisitorFolder(string absPath, IFolderVisitor visitor) { if (visitor == null) { return(ABState.NONE); } ABState state = new ABState(); var dirs = Directory.GetDirectories(absPath); if (dirs.Length > 0) { for (int i = 0; i < dirs.Length; ++i) { ABState subState = VisitorFolder(dirs[i], visitor); if (subState.hasMixed) { state.hasMixed = true; } if (subState.isLost) { state.isLost = true; } } } var files = Directory.GetFiles(absPath); if (files.Length > 0) { for (int i = 0; i < files.Length; ++i) { if (!AssetFileFilter.IsAsset(files[i])) { continue; } AssetImporter ai = AssetImporter.GetAtPath(EditorUtils.ABSPath2AssetsPath(files[i])); if (ai != null) { if (!string.IsNullOrEmpty(ai.assetBundleName)) { //Log.i("Files:" + files[i] + " ---> " + ai.assetBundleName); string assetPath = EditorFileUtils.RemoveFileExtend(ai.assetPath).ToLower(); string bundleName = EditorFileUtils.RemoveFileExtend(ai.assetBundleName); if (assetPath.EndsWith(bundleName)) { //Log.i("File Flag:" + assetPath); state.flag |= ABStateDefine.FILE; visitor.OnAssetVisitorResult(ai, ABStateDefine.FILE); } else { //Log.i("##Folder Flag:" + assetPath); state.flag |= ABStateDefine.FOLDER; visitor.OnAssetVisitorResult(ai, ABStateDefine.FOLDER); } } else { state.isLost = true; visitor.OnAssetVisitorResult(ai, ABStateDefine.LOST); } } } } if (state.isMixedFlag) { state.hasMixed = true; } visitor.OnFolderVisitorResult(absPath, state); return(state); }