//IEnumerator testLoader(string dep) //{ // yield return new WaitForSeconds(0.5f); // AssetBundleAsyncLoader depLoader = assetManager.LoadAssetBundle(dep, false, OnDependencyComplete) as AssetBundleAsyncLoader; // if (depLoader != null) // { // depLoader.autoRelease = false; // depLoader.onAssetBundleLoaded += OnDependencyLoaded; // } // m_DependencyLoaders.Add(depLoader); //} protected void OnDependencyLoaded(AssetBundleAsyncLoader loader) { #if ASSETMANAGER_LOG_ON Debug.LogFormat("[AssetManage]DependencyLoaded {0}=>{1}---{2}", info != null?info.fullName:"Null", loader.info != null ? loader.info.fullName : "Null", Time.frameCount); #endif if (--m_WaitDependencyLoadCount == 0) { m_DependenciesIsLoaded = true; } }
protected virtual void LoadDependencies() { string[] dependencies = info.dependencies; m_WaitDependencyLoadCount = dependencies.Length; m_WaitDependencyCompleteCount = dependencies.Length; m_DependenciesHaveError = false; #if ASSETMANAGER_LOG_ON Debug.LogFormat("[AssetManage]Load Dependencies {0}---{1}", dependencies.Length, Time.frameCount); #endif if (m_DependencyLoaders == null) { m_DependencyLoaders = new List <AssetBundleAsyncLoader>(); } else { m_DependencyLoaders.Clear(); } ResetDependencies(); m_DependenciesIsLoaded = false; m_DependenciesIsDone = false; for (int i = 0, l = dependencies.Length; i < l; ++i) { string dep = dependencies[i]; //if (dep.Contains("blue_s")) //{ // assetManager.StartCoroutine(testLoader(dep)); // continue; //} AssetBundleAsyncLoader depLoader = assetManager.LoadAssetBundle(dep, AMSetting.CacheDependencyBundle, OnDependencyComplete) as AssetBundleAsyncLoader; if (depLoader != null) { depLoader.onAssetBundleLoaded += OnDependencyLoaded; depLoader.onBeforeComplete += OnBeforeDependencyComplete; } m_DependencyLoaders.Add(depLoader); } }
public override void Abort() { //如果已经完成或出错,则无效。 if (m_State == State.Error || m_State == State.Completed) { return; } base.Abort(); //清除未完成的loader if (m_DependencyLoaders != null && m_DependencyLoaders.Count > 0) { for (int i = 0; i < m_DependencyLoaders.Count; ++i) { AssetBundleAsyncLoader depLoader = m_DependencyLoaders[i]; depLoader.onAssetBundleLoaded -= OnDependencyLoaded; depLoader.onBeforeComplete -= OnBeforeDependencyComplete; depLoader.onComplete -= OnDependencyComplete; depLoader.DecreaseLoadingRequest(); } m_DependencyLoaders.Clear(); } //清除已经加载的AssetBundle ClearDependencies(); //清除本身资源 if (m_Request != null) { m_Request.onComplete -= OnBundleRequestComplete; m_Request = null; } //执行一次加载完成 DoLoadComplete(); }