// This private method should be called after init void downloadSync(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); downloadSync(dependRequest); if (dependRequest.AssetBundle != null) { if (!_succeedRequest.ContainsKey(dependRequest.Url)) { _succeedRequest.Add(dependRequest.Url, 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 } request.CreateAssetBundleSync(); if (request.AssetBundle != null) { if (!_succeedRequest.ContainsKey(request.Url)) { _succeedRequest.Add(request.Url, request); } } } else { if (request.priority == -1) { request.priority = 0; // User didn't give the priority } request.CreateAssetBundleSync(); if (request.AssetBundle != null) { if (!_succeedRequest.ContainsKey(request.Url)) { _succeedRequest.Add(request.Url, request); } } } }