public void LoadComplete() { //如果异步加载,则会产生CreateRequest,如果同步加载,则已直接为成型AssetBundle,不用再处理 if (CreateRequest != null && CreateRequest.isDone) { if (!string.IsNullOrEmpty(CreateRequest.error)) { Log.E(ELogTag.ResourceSys, CreateRequest.url + CreateRequest.error); return; } try { AssetBundle = CreateRequest.assetBundle; } catch (Exception) { Log.F(ELogTag.ResourceSys, Url + " load done , but assetBundle is null"); return; } } //如果这是一个依赖包 if (AssetBundle != null && IsDependency) { DependenManager.OnDenpendentLoadComplete(this); } }
// This private method should be called after init void download(BundleRequest request) { if (isDownloadingWWW(request.Url) || _succeedRequest.ContainsKey(request.Url)) { return; } if (isBundleUrl(request.Url)) { string bundleName = Path.GetFileNameWithoutExtension(request.Url); if (!BundleConfigManager.BundleDataDict.ContainsKey(bundleName)) { Debug.LogError("Cannot download bundle [" + bundleName + "]. It's not in the bundle config."); return; } List <string> dependlist = getDependList(bundleName); //遍历依赖包 foreach (string bundle in dependlist) { string depBundleUrl = formatUrl(bundle); //如果依赖包还未加载,并且没有在处理,则进行加载 if (!_processingRequest.ContainsKey(depBundleUrl) && !_succeedRequest.ContainsKey(depBundleUrl)) { BundleRequest dependRequest = new BundleRequest(); dependRequest.Url = depBundleUrl; dependRequest.priority = dependRequest.bundleData.priority; //处理依赖 dependRequest.IsDependency = true; DependenManager.AddWattingThisDependent(request.bundleData, dependRequest); addRequestToWaitingList(dependRequest); } //未加载完成,目前正在加载中 else if (_processingRequest.ContainsKey(depBundleUrl)) { //进行依赖登记 DependenManager.AddWattingThisDependent(request.bundleData, _processingRequest[depBundleUrl]); } //已经加载完成 else if (_succeedRequest.ContainsKey(depBundleUrl)) { //直接加载依赖 DependenManager.LoadDependent(request.bundleData, _succeedRequest[depBundleUrl]); } } if (request.priority == -1) { request.priority = request.bundleData.priority; // User didn't change the default priority } addRequestToWaitingList(request); } else { if (request.priority == -1) { request.priority = 0; // User didn't give the priority } addRequestToWaitingList(request); } }