コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="bundleName"> 为相对路径 like ==ScenceOne/Prefeb.ld  </param>
        /// <param name="referName"></param>
        /// <param name="progress"></param>
        public void LoadAssetBundle(string bundleName, LoaderProgrocess progress, LoadAssetBundleCallBack callBack)
        {
            if (!loadHelper.ContainsKey(bundleName))
            {
                IABRelationManager loader = new IABRelationManager();

                loader.Initial(progress);

                loader.SetBundleName(bundleName);

                loadHelper.Add(bundleName, loader);



                //  Debug.Log("CALL BACK =="+ bundleName);

                //让 ILoadManager去加载	public IEnumerator LoadAssetBundles(string  bundleName)
                callBack(scenceName, bundleName);
                //StartCoroutine(LoadAssetBundles(bundleName));

                //    StartCoroutine(loader.LoadAssetBundle());
            }
            else
            {
                //progress(bundleName,1);
                Debuger.LogError("IABManager  have contain bundleName ==" + bundleName);
            }
        }
コード例 #2
0
 public void DebuggerBundle(string bundleName)
 {
     if (loadHelper.ContainsKey(bundleName))
     {
         IABRelationManager loader = loadHelper[bundleName];
         loader.DebuggerAsset();
     }
     else
     {
         //  Debuger.Log("IABManager no contain  bundle ==" + bundleName);
     }
 }
コード例 #3
0
        public void AddLoadFnishBackDelegate(string bundleName, LoaderProgrocess progress)
        {
            if (loadHelper.ContainsKey(bundleName))
            {
                IABRelationManager loader = loadHelper[bundleName];

                loader.AddLoadFnishBackDelegate(progress);
            }
            else
            {
                Debuger.Log("IABManager no contain  bundle ==" + bundleName);
            }
        }
コード例 #4
0
        public IEnumerator GetResAsys(string bundleName, BundleInfo tmpInfo)
        {
            bool hasFind = false;

            ///缓存中已经加载了Object
            if (loadObj.ContainsKey(bundleName))
            {
                //Debug.Log("get  from memory =="+ resName);
                AssetResObj tmpRes = loadObj[bundleName];

                List <Object> tmpObj = tmpRes.GetResObj(tmpInfo.resName);
                if (tmpObj != null)
                {
                    tmpInfo.AddReses(tmpObj.ToArray());


                    tmpInfo.ReleaseObj();
                    hasFind = true;
                }
            } // 没有找到 继续向下


            if (!hasFind && loadHelper.ContainsKey(bundleName))
            {
                IABRelationManager loader = loadHelper[bundleName];

                yield return(loader.GetResAsys(tmpInfo)

                             );

                AssetObj tmpAssetObj = new AssetObj(tmpInfo.resObj);

                //是否已经包含bundle 
                if (loadObj.ContainsKey(bundleName))
                {
                    AssetResObj tmpRes = loadObj[bundleName];


                    tmpRes.AddResObj(tmpInfo.resName, tmpAssetObj);
                }
                else
                {
                    AssetResObj tmpRes = new AssetResObj(tmpInfo.resName, tmpAssetObj);
                    loadObj.Add(bundleName, tmpRes);
                }


                tmpInfo.ReleaseObj();
            }
        }
コード例 #5
0
        // remove  single bundle
        public void DisposeBundle(string bundleName)
        {
            if (loadHelper.ContainsKey(bundleName))
            {
                IABRelationManager loader = loadHelper[bundleName];

                List <string> dependences = loader.GetDependences();

                if (dependences != null)
                {
                    //删除该包 所依赖的包的关系
                    for (int i = 0; i < dependences.Count; i++)
                    {
                        if (loadHelper.ContainsKey(dependences[i]))
                        {
                            loader.RemoveDependence(bundleName);

                            IABRelationManager denpence = loadHelper[dependences[i]];

                            if (denpence.RemoveReferrence(bundleName))
                            {
                                //没有依赖关系了 就删除了
                                string tmpName = denpence.GetBundleName();


                                DisposeBundle(tmpName);
                            }
                        }
                    }
                }

                if (loader.GetReferrence() != null)
                {
                    //删除该包
                    if (loader.GetReferrence().Count <= 0)
                    {
                        loader.Dispose();
                        loadHelper.Remove(bundleName);

                        loader = null;



                        //删除包 加载的  assetbundle.load 出来的内存
                        //	DisposeResObj(bundleName);
                    }
                }
            }
        }
コード例 #6
0
        public bool  IsLoadingFinish(string bundleName)
        {
            if (loadHelper.ContainsKey(bundleName))
            {
                IABRelationManager loader = loadHelper[bundleName];

                return(loader.IsLoadingFinish());
            }
            else
            {
                Debuger.Log("IABManager no contain  bundle ==" + bundleName);

                return(false);
            }
        }
コード例 #7
0
        /// <summary>
        /// Gets the single resource.
        /// </summary>
        /// <returns>The single resource.</returns>
        /// <param name="bundleName">Bundle name. 相对路径</param>
        /// <param name="resName">Res name.</param>

        public Object GetSingleResource(string bundleName, string resName)
        {
            ///缓存中已经加载了Object
            if (loadObj.ContainsKey(bundleName))
            {
                //Debug.Log("get  from memory =="+ resName);
                AssetResObj tmpRes = loadObj[bundleName];

                List <Object> tmpObj = tmpRes.GetResObj(resName);
                if (tmpObj != null)
                {
                    return(tmpObj[0]);
                }
            }             // 没有找到 继续向下

            if (loadHelper.ContainsKey(bundleName))

            {
                //  Debug.Log("single  load manager =="+ bundleName);

                IABRelationManager loader = loadHelper[bundleName];

                Object   tmpObj      = loader.GetSingleResource(resName);
                AssetObj tmpAssetObj = new AssetObj(tmpObj);

                //是否已经包含bundle 
                if (loadObj.ContainsKey(bundleName))
                {
                    AssetResObj tmpRes = loadObj[bundleName];


                    tmpRes.AddResObj(resName, tmpAssetObj);
                }
                else
                {
                    AssetResObj tmpRes = new AssetResObj(resName, tmpAssetObj);
                    loadObj.Add(bundleName, tmpRes);
                }



                return(tmpObj);
            }
            else
            {
                return(null);
            }
        }
コード例 #8
0
        public Object[] GetMutiResources(string bundleName, string resName)
        {
            if (loadObj.ContainsKey(bundleName))
            {
                AssetResObj tmpRes = loadObj[bundleName];

                List <Object> tmpObj = tmpRes.GetResObj(resName);
                if (tmpObj != null)
                {
                    return(tmpObj.ToArray());
                }
            }



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

                Object[] tmpObjs     = loader.GetAllResources(resName);
                AssetObj tmpAssetObj = new AssetObj(tmpObjs);


                if (loadObj.ContainsKey(bundleName))
                {
                    AssetResObj tmpRes = loadObj[bundleName];


                    tmpRes.AddResObj(resName, tmpAssetObj);
                }
                else
                {
                    AssetResObj tmpRes = new AssetResObj(resName, tmpAssetObj);
                    loadObj.Add(bundleName, tmpRes);
                }



                return(tmpObjs);
            }
            else
            {
                return(null);
            }
        }
コード例 #9
0
        /// <summary>
        ///   删除 bundle 镜像
        /// </summary>
        public void DisposeAllBundle()
        {
            List <string> keys = new List <string>();

            keys.AddRange(loadHelper.Keys);

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

                loader.Dispose();

                //删除Object
                //DisposeResObj(keys[i]);
            }

            loadHelper.Clear();
        }
コード例 #10
0
        /// <summary>
        /// Loads the asset bundles.
        /// </summary>
        /// <returns>The asset bundles.</returns>
        /// <param name="bundleName">Bundle name. 相对路径</param>
        public IEnumerator LoadAssetBundles(string bundleName)
        {
            //  Debug.Log("IABManager load  manifest== " + bundleName);

            while (!IABManifestLoader.Instance.IsLoadFinish())
            {
                //Debug.Log("IABManager  load  manifest3332== " + bundleName);


                yield return(null); //IABManifestLoader.Instance.LoadManifeset();
            }



            // Debug.Log("load bundle  == " + bundleName);


            IABRelationManager loader = loadHelper[bundleName];



            string[] dependences = GetDependences(bundleName);


            loader.SetDependences(dependences);
            //scenceone/materials.ld

            int tmpDeferCount = dependences.Length;

            for (int i = 0; i < tmpDeferCount; i++)
            {
                yield  return(LoadAssetBundleDependences(dependences[i], bundleName, loader.GetProgress()));
            }

            // Debug.Log("load  IABManager  manifest3333== " + bundleName);

            if (loader.IsUnLoadAssetBundle())
            {
                // Debug.Log("load  IABManager  444444444444== " + bundleName);


                yield return(loader.LoadAssetBundle());
            }
        }
コード例 #11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="bundleName"> like ==ScenceOne\Prefeb.ld  </param>
        /// <param name="referName"></param>
        /// <param name="progress"></param>
        public IEnumerator LoadAssetBundleDependences(string bundleName, string referName, LoaderProgrocess progress)
        {
            if (!loadHelper.ContainsKey(bundleName))
            {
                //   Debuger.Log("bundle =="+ referName +"==dependec=="+bundleName);


                IABRelationManager loader = new IABRelationManager();

                loader.Initial(progress);

                loader.SetBundleName(bundleName);

                if (referName != null)
                {
                    loader.AddReferrence(referName);
                }

                loadHelper.Add(bundleName, loader);



                yield return(LoadAssetBundles(bundleName));
                //     StartCoroutine(LoadAssetBundles(bundleName));

                //    StartCoroutine(loader.LoadAssetBundle());
            }
            else
            {
                if (referName != null)
                {
                    IABRelationManager loader = loadHelper[bundleName];


                    loader.AddReferrence(referName);
                }
            }
        }