public AssetBundleIndex GetIncrementResourceList(AssetBundleIndex list0, AssetBundleIndex list1) { if (list1 == null) { return(null); } Dictionary <string, ABFile> map0 = list0 == null ? null : list0.abMap; Dictionary <string, ABFile> map1 = list1.abMap; AssetBundleIndex incremetList = new AssetBundleIndex(); foreach (var data in map1) { ABFile info = null; if (map0 == null || !map0.TryGetValue(data.Key, out info) || info.hash != data.Value.hash) { incremetList.files.Add(data.Value); } } return(incremetList); }
private static void refresh() { string path = System.IO.Path.Combine(Application.dataPath, "Packages"); DirectoryInfo test = new DirectoryInfo(path); if (test.Exists) { foreach (string group in Directory.GetDirectories(path)) { string groupname = Path.GetFileName(group); foreach (string package in Directory.GetDirectories(group)) { string packagename = Path.GetFileName(package); List <string> files = new List <string>(); ABPack pack = null; string mfPath = Path.Combine(package, "_manifest.asset"); string mfAsset = string.Format("Assets/Packages/{0}/{1}/_manifest.asset", groupname, packagename); if (!File.Exists(mfPath)) { pack = ScriptableObject.CreateInstance <ABPack>(); pack.uuid = packagename; pack.path = groupname; AssetDatabase.CreateAsset(pack, mfAsset); } else { pack = AssetDatabase.LoadAssetAtPath <ABPack>(mfAsset); pack.uuid = packagename; pack.path = groupname; } foreach (string file in Directory.GetFiles(package)) { string filename = Path.GetFileName(file); //ignore unity's meta file if (file.EndsWith(".meta")) { continue; } if (Path.GetFileName(file).Equals("_manifest.asset")) { continue; } string assetPath = string.Format("Assets/Packages/{0}/{1}/{2}", groupname, packagename, filename); AssetImporter.GetAtPath(assetPath).SetAssetBundleNameAndVariant(packagename, ""); files.Add(Path.GetFileName(file)); } if (null == pack) { continue; } Dictionary <string, ABFile> abFiles = new Dictionary <string, ABFile>(); foreach (ABFile abFile in pack.files) { abFiles.Add(abFile.name, abFile); } pack.files.Clear(); foreach (string file in files) { ABFile abFile = new ABFile(); abFile.name = Path.GetFileNameWithoutExtension(file); abFile.code = ToUUID(string.Format("{0}.{1}", packagename, abFile.name)); if (abFiles.ContainsKey(abFile.name)) { abFile.alias = abFiles[abFile.name].alias; } pack.files.Add(abFile); } } } } else { Debug.Log("Without this directory..."); } AssetDatabase.RemoveUnusedAssetBundleNames(); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); Debug.Log("refresh finish"); }