public void Create(string name, Dictionary <string, IBundle> bundles)
    {
        string manifestFileName = "StreamingAssets";

        System.Func <string, string> getPath = (string key) => { return(name); };
        if (!string.IsNullOrEmpty(name))
        {
            manifestFileName = $"{name}/{name}";
            getPath          = (string key) => { return(string.Format("{0}/{1}", name, key)); };
        }
        string manifestFile = ResPathUtil.GetStreamAssetFilePath(manifestFileName);
        var    ab           = AssetBundle.LoadFromFile(manifestFile);

        if (ab == null)
        {
            Debug.LogErrorFormat("资源初始化失败 => {0}加载失败", manifestFileName);
            return;
        }
        var manifest  = ab.LoadAsset <AssetBundleManifest>("AssetBundleManifest");
        var allABName = manifest.GetAllAssetBundles();
        Dictionary <string, IBundle> cache = new Dictionary <string, IBundle>();

        foreach (var abName in allABName)
        {
            string        keyName = name.Substring(0, abName.LastIndexOf('.'));
            PackageBundle bundle  = new PackageBundle(keyName, getPath(abName));
            bundles.Add(keyName, bundle);
            cache.Add(abName, bundle);
        }
        foreach (var abName in allABName)
        {
            var     depens = manifest.GetAllDependencies(abName);
            IBundle bundle = cache[abName];
            foreach (var dep in depens)
            {
                bundle.AddDepend(cache[dep]);
            }
        }

        ab.Unload(true);
    }