Exemple #1
0
    /// <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);
    }
Exemple #2
0
    /// <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);
    }