Exemplo n.º 1
0
		/// <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;
		}
Exemplo n.º 2
0
        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));
        }