/// <summary> /// 得到清单文件 /// </summary> /// <returns></returns> private static ManifestConfig GetManifest(string output) { output += "/" + output.Split('/')[output.Split('/').Length - 1]; ManifestConfig manifestConfig = null; if (File.Exists(output)) { manifestConfig = new ManifestConfig(); var bundle = AssetBundle.LoadFromFile(output); AssetBundleManifest abManifest = bundle.LoadAsset("assetbundlemanifest") as AssetBundleManifest; string[] bundleNames = abManifest.GetAllAssetBundles(); for (int i = 0; i < bundleNames.Length; ++i) { if (bundleNames[i].EndsWith("updatefile.json") || bundleNames[i].EndsWith("manifestfile.json")) { continue; } Manifest manifest = new Manifest(); manifest.name = bundleNames[i]; ABFI ab = GetABFI(outputPath + "/" + bundleNames[i]); manifest.MD5 = ab.md5; manifest.size = ab.size; foreach (var dependenciesName in abManifest.GetDirectDependencies(bundleNames[i])) { manifest.dependencies.Add(dependenciesName); } manifestConfig.Add(manifest); } bundle.Unload(true); } return(manifestConfig); }
/// <summary> /// 得到MD5 /// </summary> /// <param name="path"></param> /// <returns></returns> private static ABFI GetABFI(string path) { ABFI ab = new ABFI(); try { FileStream fs = new FileStream(path, FileMode.Open); ab.size = Mathf.CeilToInt((fs.Length / 1024f)); System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); byte[] retVal = md5.ComputeHash(fs); fs.Close(); System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < retVal.Length; i++) { sb.Append(retVal[i].ToString("x2")); } ab.md5 = sb.ToString(); } catch (System.Exception e) { throw new System.Exception(e.Message); } return(ab); }