/// <summary>构造函数</summary> /// <param name="handler">加载完成时调用的委托</param> /// <param name="allHandler">全部加载完成时调用的委托</param> internal MultiBundleLoader(LoadCompleteDelegate handler,LoadAllCompleteDelegate allHandler) { // if(string.IsNullOrEmpty(sceneName)) // throw new ArgumentException(FrameConst.PREFIX + nameof(sceneName)); // if(string.IsNullOrEmpty(bundleName)) // throw new ArgumentException(FrameConst.PREFIX + nameof(bundleName)); singleBundleLoaderDict = new Dictionary<string, SingleBundleLoader>(); bundleRelationDict = new Dictionary<string, BundleRelation>(); loadCompleteHandler = handler; loadAllCompleteHandler = allHandler; }
public IEnumerator LoadAssetBundle(string sceneName, string bundleName, LoadCompleteDelegate handler = null, LoadAllCompleteDelegate allHandler = null) { if (string.IsNullOrWhiteSpace(sceneName)) { throw new ArgumentException(FrameConst.PREFIX + "非法的字符串!", nameof(sceneName)); } if (string.IsNullOrWhiteSpace(bundleName)) { throw new ArgumentException(FrameConst.PREFIX + "非法的字符串!", nameof(bundleName)); } //等待清单文件加载完成 while (!ManifestMgr.Instance.IsLoadFinished) { yield return(null); } Manifest = ManifestMgr.Instance.GetManifest(); //把当前场景加入集合中 if (!multiBundleLoaderDict.ContainsKey(sceneName)) { MultiBundleLoader multiBundleLoader = new MultiBundleLoader(handler, allHandler); multiBundleLoaderDict.Add(sceneName, multiBundleLoader); } //加载指定的AB包 yield return(multiBundleLoaderDict[sceneName].LoadAssetBundle(bundleName)); }