Пример #1
0
        public IEnumerator LoadAssetBundleDependences(string bundleName, string refName, LoadProgrecess progrecess)
        {
            if (!loadHelper.ContainsKey(bundleName))
            {
                IABRelationManager loader = new IABRelationManager();

                loader.Init(bundleName, progrecess);


                if (refName != null)
                {
                    loader.AddReference(refName);
                }

                loadHelper.Add(bundleName, loader);

                yield return(LoadAssetBundles(bundleName));
            }
            else
            {
                if (refName != null)
                {
                    IABRelationManager loader = loadHelper[bundleName];
                    loader.AddReference(bundleName);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 循环处理依赖关系
        /// </summary>
        /// <param name="bundleNmae"></param>
        public void DisposeBundle(string bundleNmae)
        {
            Debug.Log(bundleNmae);

            if (loadHelper.ContainsKey(bundleNmae))
            {
                IABRelationManager loader = loadHelper[bundleNmae];

                List <string> depences = loader.GetDependence();
                for (int i = 0; i < depences.Count; i++)
                {
                    if (loadHelper.ContainsKey(depences[i]))
                    {
                        IABRelationManager dependce = loadHelper[depences[i]];
                        if (dependce.RemoveReference(bundleNmae))
                        {
                            DisposeBundle(dependce.GetBundleName());
                        }
                    }
                }

                if (loader.GetReference().Count <= 0)
                {
                    loader.Dispose();
                    loadHelper.Remove(bundleNmae);
                }
            }
            else
            {
                Debug.Log("bundle is not exist ==" + bundleNmae);
            }
        }
Пример #3
0
 /// <summary>
 /// 打印该资源包中所有资源bundle名
 /// </summary>
 /// <param name="bundleName"></param>
 public void DebugAssetBundle(string bundleName)
 {
     if (loadHelper.ContainsKey(bundleName))
     {
         IABRelationManager loader = loadHelper[bundleName];
         loader.DebugerLoader();
     }
     else
     {
         Debug.Log("not contain assetbundle ==" + bundleName);
     }
 }
Пример #4
0
        public void DisposeAllBundle()
        {
            List <string> keys = new List <string>();

            keys.AddRange(loadHelper.Keys);
            for (int i = 0; i < keys.Count; i++)
            {
                IABRelationManager loader = loadHelper[keys[i]];
                loader.Dispose();
            }

            loadHelper.Clear();
        }
Пример #5
0
        /// <summary>
        /// (外部调用)
        /// </summary>
        /// <param name="bundleName"></param>
        /// <param name="progrecess"></param>
        /// <param name="callBack"></param>
        public void LoadAssetBundle(string bundleName, LoadProgrecess progrecess, LoadAssetBundleCallBack callBack)
        {
            if (!loadHelper.ContainsKey(bundleName))
            {
                IABRelationManager loader = new IABRelationManager();

                loader.Init(bundleName, progrecess);

                loadHelper.Add(bundleName, loader);

                callBack(sceneName, bundleName);
            }
            else
            {
                Debug.Log("IABManager have contain bundle name ==" + bundleName);
            }
        }
Пример #6
0
        public IEnumerator LoadAssetBundles(string bundleName)
        {
            while (!IABManifestLoader.Instance.IsLoadFinish())
            {
                yield return(null);
            }

            IABRelationManager loader = loadHelper[bundleName];

            string[] dependences = GetDependences(bundleName);

            loader.SetDependence(dependences);

            for (int i = 0; i < dependences.Length; i++)
            {
                yield return(LoadAssetBundleDependences(dependences[i], bundleName, loader.GetProgrecess()));
            }
            yield return(loader.LoadAssetBundle());
        }
Пример #7
0
        public UnityEngine.Object GetSingleResourcess(string bundleName, string resName)
        {
            if (loadObj.ContainsKey(bundleName))
            {
                List <UnityEngine.Object> listObj = loadObj[bundleName].GetResObj(resName);
                if (listObj != null)
                {
                    return(listObj[0]);
                }
            }

            if (loadHelper.ContainsKey(bundleName))//表示已经加载过bundle
            {
                IABRelationManager loader = loadHelper[bundleName];

                // lhy change bundleName --> resName
                UnityEngine.Object tmpObj = loader.GetSingleResources(resName);

                AssetObj tmpAssetObj = new AssetObj(tmpObj);

                //缓存里面是否有这个bundle包
                if (loadObj.ContainsKey(bundleName))
                {
                    AssetResObj tmpAssetResObj = loadObj[bundleName];
                    tmpAssetResObj.AddResObj(resName, tmpAssetObj);
                }
                else
                {
                    AssetResObj tmpRes = new AssetResObj(resName, tmpAssetObj);
                    loadObj.Add(bundleName, tmpRes);
                }

                return(tmpObj);
            }
            else
            {//没有加载过
                return(null);
            }
        }