public static void ClearOldABNames() { AssetDatabase.RemoveUnusedAssetBundleNames(); var names = AssetDatabase.GetAllAssetBundleNames(); if (names == null || names.Length == 0) { return; } ABNameDefineSet defineSet = GetNameDefineSet(); foreach (var name in names) { if (defineSet.defineMap.ContainsKey(name)) { continue; } var paths = AssetDatabase.GetAssetPathsFromAssetBundle(name); if (paths == null || paths.Length == 0) { continue; } foreach (var path in paths) { AssetImporter importer = AssetImporter.GetAtPath(path); importer.assetBundleName = string.Empty; } } AssetDatabase.RemoveUnusedAssetBundleNames(); }
public static void ExportABHashs(AssetBundleManifest mainfest, List <Frame.ABFile> abs = null) { bool save = abs == null; if (abs == null) { abs = abIndex.files; } abIndex.files.Clear(); AssetDatabase.RemoveUnusedAssetBundleNames(); var names = AssetDatabase.GetAllAssetBundleNames(); ABNameDefineSet defineSet = GetNameDefineSet(); List <string> garbages = new List <string>(); foreach (var abName in names) { FileInfo fileInfo = new FileInfo(Frame.Helper.CombineWithSlash(GetABFloder(), abName)); if (!fileInfo.Exists) { List <string> srcfiles = GetErrorABSource(abName); if (srcfiles.Count > 0) { StringBuilder sb = new StringBuilder(); foreach (var file in srcfiles) { sb.Append(string.Format("Error AB Define=>{0},", file)); } BuildLog.WriteLine(sb.ToString()); } garbages.Add(abName); } else { var info = new Frame.ABFile(); info.name = abName; info.children.AddRange(mainfest.GetAllDependencies(abName)); info.hash = mainfest.GetAssetBundleHash(abName).ToString(); info.size = (int)fileInfo.Length; try { info.persistent = defineSet.defineMap[abName].persistent; } catch (System.Exception ex) { Debug.LogError(string.Format("Path Error! AB name:" + abName)); } mABIndex.files.Add(info); } } if (save) { SaveABIndex(); } }
static ABNameDefineSet GetNameDefineSet() { if (!TipFileNotExist(GameOption.BuildOption.abNamesFile)) { return(null); } string content = File.ReadAllText(GameOption.BuildOption.abNamesFile); ABNameDefineSet defineSet = JsonUtility.FromJson <ABNameDefineSet>(content); return(defineSet); }
public static void SetAllABNames() { ABNameDefineSet defineSet = GetNameDefineSet(); foreach (var def in defineSet.defines) { foreach (var path in def.resources) { SetABName(path, def.abName); } } }
public static void ExportABNames() { if (!TipFileNotExist(GameOption.BuildOption.abDependenceFile)) { return; } ABGraph graph = new ABGraph(); var nodes = graph.LoadFromJson(GameOption.BuildOption.abDependenceFile); nodes.Sort((a, b) => a.path.CompareTo(b.path)); var contents = graph.GenerateContent(nodes); ABNameDefineSet defineSet = new ABNameDefineSet(); foreach (var content in contents) { string sceneName = content.GetScene(); if (string.IsNullOrEmpty(sceneName)) { ABNameDefine def = new ABNameDefine(); def.abName = GetNameFromGame(content.name); def.persistent = content.persistent; def.resources.AddRange(content.GetAllPaths()); defineSet.defines.Add(def); } else { ABNameDefine sceneDef = new ABNameDefine(); sceneDef.abName = GetNameFromGame("Scene_" + content.name); sceneDef.persistent = false; sceneDef.resources.Add(sceneName); defineSet.defines.Add(sceneDef); ABNameDefine def = new ABNameDefine(); def.abName = GetNameFromGame(content.name); def.persistent = content.persistent; def.resources.AddRange(content.GetAllPathsWithoutScene()); defineSet.defines.Add(def); } } //Cannot mark assets and scenes in one AssetBundle. string text = JsonUtility.ToJson(defineSet, true); File.WriteAllText(GameOption.BuildOption.abNamesFile, text); }