/// <summary>
        /// 释放当前场景所有资源
        /// </summary>
        /// <param name="sceneName">场景名称</param>
        public void DisposeAllAssets(string sceneName)
        {
            string _CurrentSceneName = sceneName.ToLower();

            if (_DicAllScenes.ContainsKey(_CurrentSceneName))
            {
                MultiABManager multiObj = _DicAllScenes[_CurrentSceneName];
                multiObj.DisposeAllAsset();
                _DicAllScenes.Remove(_CurrentSceneName);
            }
            else
            {
                Debug.Log(GetType() + "/DisposeAllAssets() sceneName 可能为空");
            }
        }
        /// <summary>
        /// 加载所需资源(泛型)
        /// </summary>
        /// <param name="sceneName">场景名称</param>
        /// <param name="abName">assetBundle 名称</param>
        /// <param name="assetName">资源名称</param>
        /// <param name="isCache">是否缓存,当用户加载资源后,自己没有加入缓存,而之后又需要再次使用这个资源,建议 true</param>
        /// <returns></returns>
        public T LoadAsset <T>(string sceneName, string abName, string assetName, bool isCache = false) where T : UnityEngine.Object
        {
            string _CurrentSceneName = sceneName.ToLower();
            string _CurrentAB        = String.Empty;
            string tmpassetName      = assetName.ToLower();

            if (abName.Contains("/"))
            {
                _CurrentAB = abName.ToLower();
            }
            else
            {
                _CurrentAB = _CurrentSceneName + "/" + abName.ToLower();
            }
            if (_DicAllScenes.ContainsKey(_CurrentSceneName))
            {
                MultiABManager multiObj = _DicAllScenes[_CurrentSceneName];
                return(multiObj.LoadAsset <T>(_CurrentAB, tmpassetName, isCache));
            }
            Debug.LogError(GetType() + "/MyLoadAsset() sceneName 可能为空,或者未使用 LoadAssetBundlePack 提前加载AB包");
            return(default(T));
        }
        /// <summary>
        /// 加载指定场景,指定包
        /// </summary>
        /// <param name="sceneName">场景名称</param>
        /// <param name="abName">assetBundle 名称</param>
        /// <param name="loadAllCompleteHandle">制定的AB包加载完成之后,执行的方法</param>
        /// <returns></returns>
        public IEnumerator LoadAssetBundlePack(string sceneName, string abName, DelLoadComplete loadAllCompleteHandle)
        {
            if (_Instance == null)
            {
                yield break;
            }
            // 参数检查
            if (string.IsNullOrEmpty(sceneName) || string.IsNullOrEmpty(abName) || loadAllCompleteHandle == null)
            {
                Debug.LogError(GetType() + "/LoadAssetBundlePack()/sceneName or abName or loadAllCompleteHandle =null");
                yield  break;
            }
            if (!abName.Contains("."))
            {
                Debug.LogError(GetType() + "/LoadAssetBundlePack()/ abName需要有后缀的(.ab或.scene)");
            }
            // 规范化参数
            string _CurrentSceneName = sceneName.ToLower();
            string _CurrentAB        = String.Empty;

            if (abName.Contains("/"))
            {
                _CurrentAB = abName.ToLower();
            }
            else
            {
                _CurrentAB = _CurrentSceneName + "/" + abName.ToLower();
            }

            // 等待Manifest清单文件加载完成
            while (!ABManifestLoader.GetInstance().IsLoadFinish)
            {
                yield return(null);
            }
            _ManifestObj = ABManifestLoader.GetInstance().GetABManifest();
            if (_ManifestObj == null)
            {
                Debug.LogError(GetType() + "/LoadAssetBundlePack()/_ManifestObj =null");
                yield break;
            }
            // 把当前场景加入集合
            if (!_DicAllScenes.ContainsKey(_CurrentSceneName))
            {
                MultiABManager multiMgrObj = new MultiABManager(_CurrentSceneName);
                _DicAllScenes.Add(_CurrentSceneName, multiMgrObj);
            }

            // 调用下一层(MultiABManager)
            MultiABManager tmpMultiAbManager = _DicAllScenes[_CurrentSceneName];

            if (tmpMultiAbManager == null)
            {
                Debug.LogError(GetType() + "/LoadAssetBundlePack()/tmpMultiAbManager=null");
                yield break;
            }
            else
            {
                tmpMultiAbManager.SetCurrentABNameAndHandler(_CurrentAB, loadAllCompleteHandle);
                // 调用“多包管理类”来加载指定AB包
                yield return(tmpMultiAbManager.LoadAssetBundle(_CurrentAB));
            }
        }