Example #1
0
 public void ReleseBundle(string bundleName, bool isReleseRes)
 {
     if (loadHelperDic.ContainsKey(bundleName))
     {
         ABRelativeM   abrM       = loadHelperDic[bundleName];
         List <string> dependList = abrM.GetDependList();
         for (int i = 0; i < dependList.Count; i++)
         {
             if (loadHelperDic.ContainsKey(dependList[i]))
             {
                 ABRelativeM dependAbrm = loadHelperDic[dependList[i]];
                 if (dependAbrm.RemoveReferBundle(bundleName))
                 {
                     ReleseBundle(dependAbrm.BundleName, isReleseRes);
                 }
             }
         }
         if (abrM.GetReferList().Count <= 0)
         {
             if (isReleseRes)
             {
                 ReleseBundleAsset(bundleName);
             }
             abrM.Dispose();
             loadHelperDic.Remove(bundleName);
         }
     }
 }
Example #2
0
 public void LoadAssetBundle(string bundleName, ABLoadProgress loadProgress, LoadAssetBundleCallBack callBack)
 {
     if (!loadHelperDic.ContainsKey(bundleName))
     {
         ABRelativeM abM = new ABRelativeM();
         abM.Initial(bundleName, loadProgress);
         loadHelperDic.Add(bundleName, abM);
         callBack(scenceName, bundleName);
     }
 }
Example #3
0
    public IEnumerator LoadAssetBundle(string bundleName)
    {
        while (!ManifestManager.Instance.IsLoadFinish)
        {
            yield return(null);
        }
        ABRelativeM abM = loadHelperDic[bundleName];

        string[] depends = GetBundleDepends(bundleName);
        abM.SetDependList(depends);
        for (int i = 0; i < depends.Length; i++)
        {
            yield return(LoadABDepends(depends[i], bundleName, abM.GetLoadProgress()));
        }

        yield return(abM.LoadAssetBundle());
    }
Example #4
0
 public IEnumerator LoadABDepends(string bundleName, string refName, ABLoadProgress loadProgress)
 {
     if (!loadHelperDic.ContainsKey(bundleName))
     {
         ABRelativeM abM = new ABRelativeM();
         abM.Initial(bundleName, loadProgress);
         loadHelperDic.Add(bundleName, abM);
         if (refName != null)
         {
             abM.AddReferBundle(refName);
         }
         yield return(LoadAssetBundle(bundleName));
     }
     else
     {
         if (refName != null)
         {
             loadHelperDic[bundleName].AddReferBundle(refName);
         }
     }
 }
Example #5
0
 public Object GetSingleRes(string bundleName, string resName)
 {
     //是否缓存了物体
     if (loadedAssetMDic.ContainsKey(bundleName))
     {
         List <Object> tmpList = loadedAssetMDic[bundleName].GetLoadedAssets(resName);
         Debug.Log("已缓存Asset  = " + tmpList[0].name);
         if (tmpList != null)
         {
             return(tmpList[0]);
         }
     }
     //是否加载过Bundle
     if (loadHelperDic.ContainsKey(bundleName))
     {
         ABRelativeM abM = loadHelperDic[bundleName];
         Debug.Log("从已缓存bundle中加载 bundleName = " + bundleName + " Asset =" + resName);
         Object tmpObj   = abM.GetSingleRes(resName);
         Asset  assetObj = new Asset(tmpObj);
         //如果当前已经存在Bundle的BundleAssetM
         if (loadedAssetMDic.ContainsKey(bundleName))
         {
             BundleAssetM assetM = loadedAssetMDic[bundleName];
             assetM.AddAsset(resName, assetObj);
         }
         //如果当前不存在该Bundle的BundleAssetM
         else
         {
             BundleAssetM assetM = new BundleAssetM(resName, assetObj);
             loadedAssetMDic.Add(bundleName, assetM);
         }
         return(tmpObj);
     }
     else
     {
         Debug.Log("Dont Load the Bundle    bundleName = " + bundleName);
         return(null);
     }
 }
Example #6
0
 public Object[] GetMultRes(string bundleName, string resName)
 {
     //是否缓存了物体
     if (loadedAssetMDic.ContainsKey(bundleName))
     {
         List <Object> tmpList = loadedAssetMDic[bundleName].GetLoadedAssets(resName);
         if (tmpList != null)
         {
             return(tmpList.ToArray());
         }
     }
     //是否加载过Bundle
     if (loadHelperDic.ContainsKey(bundleName))
     {
         ABRelativeM abM      = loadHelperDic[bundleName];
         Object[]    tmpObj   = abM.GetMultRes(resName);
         Asset       assetObj = new Asset(tmpObj);
         //如果当前已经缓存过 该 bundleName 的Res
         if (loadedAssetMDic.ContainsKey(bundleName))
         {
             BundleAssetM assetM = loadedAssetMDic[bundleName];
             assetM.AddAsset(resName, assetObj);
         }
         //当前未缓存过该bundleName的包
         else
         {
             BundleAssetM assetM = new BundleAssetM(resName, assetObj);
             loadedAssetMDic.Add(bundleName, assetM);
         }
         return(tmpObj);
     }
     else
     {
         Debug.Log("Dont Load the Bundle    bundleName = " + bundleName);
         return(null);
     }
 }