Ejemplo n.º 1
0
        }//Method_end

        /// <summary>
        /// 加载(AB 包中)资源
        /// </summary>
        /// <param name="scenesName">场景名称</param>
        /// <param name="abName">AssetBundle 包名称</param>
        /// <param name="assetName">资源名称</param>
        /// <param name="isCache">是否使用缓存</param>
        /// <returns></returns>
        public UnityEngine.Object LoadAsset(string scenesName, string abName, string assetName, bool isCache)
        {
            if (_DicAllScenes.ContainsKey(scenesName))
            {
                MultiABMgr multObj = _DicAllScenes[scenesName];
                return(multObj.LoadAsset(abName, assetName, isCache));
            }
            Debug.LogError(GetType() + "/LoadAsset()/找不到场景名称,无法加载(AB包中)资源,请检查!  scenesName=" + scenesName);
            return(null);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 加载 AB包中的资源
 /// </summary>
 /// <param name="sceneName">场景名称</param>
 /// <param name="abName">AssetBundle包名称</param>
 /// <param name="isCache">是否缓存</param>
 /// <returns></returns>
 public UnityEngine.Object LoadAsset(string sceneName, string abName, string assetName, bool isCache)
 {
     if (_DicAllScene.ContainsKey(sceneName))
     {
         MultiABMgr multObj = _DicAllScene[sceneName];
         return(multObj.LoadAsset(abName, assetName, isCache));
     }
     Debug.LogError("_DicAllScene不包含" + sceneName);
     return(null);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 释放资源。
 /// </summary>
 /// <param name="scenesName">场景名称</param>
 public void DisposeAllAssets(string scenesName)
 {
     if (_DicAllScenes.ContainsKey(scenesName))
     {
         MultiABMgr multObj = _DicAllScenes[scenesName];
         multObj.DisposeAllAsset();
     }
     else
     {
         Debug.LogError(GetType() + "/DisposeAllAssets()/找不到场景名称,无法释放资源,请检查!  scenesName=" + scenesName);
     }
 }
Ejemplo n.º 4
0
 public void DisposeAllAssets(string sceneName)
 {
     if (_DicAllScene.ContainsKey(sceneName))
     {
         MultiABMgr multObj = _DicAllScene[sceneName];
         multObj.DisposeAllAsset();
     }
     else
     {
         Debug.LogError("_DicAllScene 不包含" + sceneName);
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        /// 下载AssetBundel 指定包
        /// </summary>
        /// <param name="scenesName">场景名称</param>
        /// <param name="abName">AssetBundle 包名称</param>
        /// <param name="loadAllCompleteHandle">委托: 调用是否完成</param>
        /// <returns></returns>
        public IEnumerator LoadAssetBundlePack(string scenesName, string abName, DelLoadComplete loadAllCompleteHandle)
        {
            //参数检查
            if (string.IsNullOrEmpty(scenesName) || string.IsNullOrEmpty(abName))
            {
                Debug.LogError(GetType() + "/LoadAssetBundlePack()/ScenesName Or abName is null ,请检查!");
                //yield return null;//类似于C#中的 continue 。 作用是跳过当前“帧”
                yield break;        //类似于C# 中 return null;
            }

            //等待Manifest清单文件加载完成
            while (!ABManifestLoader.GetInstance().IsLoadFinish)
            {
                yield return(null);
            }
            _ManifestObj = ABManifestLoader.GetInstance().GetABManifest();
            if (_ManifestObj == null)
            {
                Debug.LogError(GetType() + "/LoadAssetBundlePack()/_ManifestObj is null ,请先确保加载Manifest清单文件!");
                //yield return null;
                yield break;
            }

            //把当前场景加入集合中。
            if (!_DicAllScenes.ContainsKey(scenesName))
            {
                MultiABMgr multiMgrObj = new MultiABMgr(scenesName, abName, loadAllCompleteHandle);
                _DicAllScenes.Add(scenesName, multiMgrObj);
            }

            //调用下一层(“多包管理类”)
            MultiABMgr tmpMultiMgrObj = _DicAllScenes[scenesName];

            if (tmpMultiMgrObj == null)
            {
                Debug.LogError(GetType() + "/LoadAssetBundlePack()/tmpMultiMgrObj is null ,请检查!");
            }
            //调用“多包管理类”的加载指定AB包。
            yield return(tmpMultiMgrObj.LoadAssetBundeler(abName));
        }//Method_end
Ejemplo n.º 6
0
        /// <summary>
        /// 下载AssetBundle指定包
        /// </summary>
        /// <param name="sceneName">场景名称</param>
        /// <param name="abName">AssetBundle包名称</param>
        /// <param name="loadAllCompleteHandle">完成回调</param>
        /// <returns></returns>
        public IEnumerator LoadAssetBundlePack(string sceneName, string abName, DelLoadComplete loadAllCompleteHandle)
        {
            if (string.IsNullOrEmpty(sceneName) || string.IsNullOrEmpty(abName))
            {
                Debug.LogError("sceneName:" + sceneName + ", abName:" + abName);
                yield break;
            }

            while (!ABManifestLoader.GetInstance().IsLoadFinish)
            {
                yield return(null);
            }

            _ManifestObj = ABManifestLoader.GetInstance().GetABManifest();

            if (_ManifestObj == null)
            {
                Debug.LogError("_ManifestObj == null");
                yield break;
            }

            //把当前场景加入集合中
            if (!_DicAllScene.ContainsKey(sceneName))
            {
                MultiABMgr multiABMgrObj = new MultiABMgr(sceneName, abName, loadAllCompleteHandle);
                _DicAllScene.Add(sceneName, multiABMgrObj);
            }
            //调用 多包管理类
            MultiABMgr tmpMultiABMgrObj = _DicAllScene[sceneName];

            if (tmpMultiABMgrObj == null)
            {
                Debug.LogError("tmpMultiABMgrObj == null");
                yield break;
            }

            //加载指定AB包
            yield return(tmpMultiABMgrObj.LoadAssetBundle(abName));
        }