Exemple #1
0
 public void DebugAssets(string bundelName)
 {
     if (loadHelper.ContainsKey(bundelName))
     {
         IABRelastion loader = loadHelper[bundelName];
         loader.DebugAssets();
     }
 }
Exemple #2
0
    //删除所有bundle文件
    public void DisposeAllBundle()
    {
        List <string> keys = new List <string>();

        keys.AddRange(loadObj.Keys);
        for (int i = 0; i < loadObj.Count; i++)
        {
            IABRelastion loader = loadHelper[keys[i]];
            loader.Dispose();
        }
        loadHelper.Clear();
    }
Exemple #3
0
 public bool IsLoadingFish(string bundleName)
 {
     if (loadHelper.ContainsKey(bundleName))
     {
         Debug.Log("test");
         IABRelastion loader = loadHelper[bundleName];
         return(loader.IsBudleLoadFish());
     }
     else
     {
         Debug.Log(" no contain bundle:" + bundleName);
         return(false);
     }
 }
Exemple #4
0
    public Object GetSingleResource(string bundleName, string resName)
    {
        //是否已经缓存了物体
        if (loadObj.ContainsKey(bundleName))
        {
            Debug.Log("0000");
            AssetObjs temres = loadObj[bundleName];

            List <Object> temobj = temres.GetResObj(resName);

            if (temobj != null)
            {
                return(temobj[0]);
            }
        }
        //表示已经加载过bundle
        if (loadHelper.ContainsKey(bundleName))
        {
            // Debug.Log("表示已经加载过bundle");

            IABRelastion loader = loadHelper[bundleName];

            Object         tempobj     = loader.GetSingleResource(resName);
            AssetSingleObj tempsigleOb = new AssetSingleObj(tempobj);
            //缓存里是否有这个包
            if (loadObj.ContainsKey(bundleName))
            {
                //  Debug.Log("1111");
                AssetObjs temRes = loadObj[bundleName];
                temRes.AddResobj(resName, tempsigleOb);
            }
            else
            {
                // Debug.Log("2222");
                //没有加载过这个包
                AssetObjs temRes = new AssetObjs(resName, tempsigleOb);
                loadObj.Add(bundleName, temRes);
            }
            return(tempobj);
        }
        else
        {
            Debug.Log("null");
            return(null);
        }
    }
Exemple #5
0
    /// <summary>
    /// 加载assetbundle必须加载mainfest
    /// </summary>callBack(scenceName ,bundleName );返回上层调用这api
    /// <returns>The asset bundles.</returns>
    /// <param name="bundlename">Bundlename.</param>
    public IEnumerator LoadAssetBundles(string bundlename)
    {
        while (!IABManifestLoader.Instance.isLoadFish)
        {
            yield return(null);
        }
        IABRelastion loader = loadHelper[bundlename];

        string[] depences = GetDepedences(bundlename);
        loader.SetDependences(depences);
        for (int i = 0; i < depences.Length; i++)
        {
            yield return(LoadAssetundleDepences(depences [i], bundlename, loader.GetProgess()));
            // yield return null;
        }
        yield return(loader.LoadAssetBundle());
    }
Exemple #6
0
 //对外接口
 public void LoadAssetBundle(string bundleName, LoadProgess progress, LoadAssetBundleCallBack callBack)
 {
     if (!loadHelper.ContainsKey(bundleName))
     {
         //Debug.Log("loadHelper");
         IABRelastion loader = new IABRelastion();
         loader.Inital(bundleName, progress);
         loadHelper.Add(bundleName, loader);
         //  Debug.Log("bundleName:"+bundleName);
         //回调给上层启动 IEnumerator LoadAssetBundles(string bundlename);
         callBack(scenceName, bundleName);
     }
     else
     {
         Debug.Log("IAbmanager have contain name:" + bundleName);
     }
 }
Exemple #7
0
    public Object[] GetMutiResource(string bundleName, string resName)
    {
        //是否已经缓存
        if (loadObj.ContainsKey(bundleName))
        {
            AssetObjs temres = loadObj[bundleName];

            List <Object> temobj = temres.GetResObj(resName);

            if (temobj != null)
            {
                return(temobj.ToArray());
            }
        }
        //表示已经加载过bundle
        if (loadHelper.ContainsKey(bundleName))
        {
            IABRelastion loader = loadHelper[bundleName];

            Object[]       tempobj     = loader.GetMutiResources(resName);
            AssetSingleObj tempsigleOb = new AssetSingleObj(tempobj);
            //缓存里是否有这个包
            if (loadObj.ContainsKey(bundleName))
            {
                AssetObjs temRes = loadObj[bundleName];
                temRes.AddResobj(resName, tempsigleOb);
            }
            else
            {
                //没有加载过这个包
                AssetObjs temRes = new AssetObjs(resName, tempsigleOb);
                loadObj.Add(bundleName, temRes);
            }
            return(tempobj);
        }
        else
        {
            return(null);
        }
    }
Exemple #8
0
 public IEnumerator LoadAssetundleDepences(string bundleName, string refname, LoadProgess progres)
 {
     //以前没有加载过这个包
     if (!loadHelper.ContainsKey(bundleName))
     {
         IABRelastion loader = new IABRelastion();
         loader.Inital(bundleName, progres);
         if (refname != null)
         {
             loader.AddReferDepedence(refname);
         }
         loadHelper.Add(bundleName, loader);
         yield return(LoadAssetBundles(bundleName));
     }
     else//表示已经加载过了
     {
         if (refname != null)
         {
             IABRelastion loader = loadHelper[bundleName];
             loader.AddReferDepedence(refname);
         }
     }
 }
Exemple #9
0
 //卸载bundle文件 循环处理依赖关系
 public void DisposeBundle(string bundle)
 {
     if (loadHelper.ContainsKey(bundle))
     {
         IABRelastion  loader   = new IABRelastion();
         List <string> depences = loader.GetDepence();
         for (int i = 0; i < depences.Count; i++)
         {
             if (loadHelper.ContainsKey(depences[i]))
             {
                 IABRelastion depence = loadHelper[depences[i]];
                 if (depence.RemoveReference(bundle))
                 {
                     DisposeBundle(depence.GetBundleName());
                 }
             }
         }
         if (loader.GetReference().Count <= 0)
         {
             loader.Dispose();
             loadHelper.Remove(bundle);
         }
     }
 }