//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();
        }