Example #1
0
 private void SyncLoadAssetBundleDependences(string bundleName, string referName)
 {
     if (abDict.ContainsKey(bundleName))
     {
         abDict[bundleName].AddReference(referName);
     }
     else
     {
         ABRelationManager abLoader = new ABRelationManager(bundleName, null);
         abDict.Add(bundleName, abLoader);
         abLoader.AddReference(referName);
         abLoader.SyncLoadAssetBundle();
     }
 }
Example #2
0
 public IEnumerator AsyncLoadAssetBundleDependences(string bundleName, string referName, LoadFinish loadFinish)
 {
     if (abDict.ContainsKey(bundleName))
     {
         abDict[bundleName].AddReference(referName);
     }
     else
     {
         ABRelationManager abLoader = new ABRelationManager(bundleName, loadFinish);
         abDict.Add(bundleName, abLoader);
         abLoader.AddReference(referName);
         yield return(AsyncLoadAssetBundle(bundleName));
     }
 }
Example #3
0
        /// <summary>
        /// 加载AssetBundle,必须先加载Manifest
        /// </summary>
        public IEnumerator AsyncLoadAssetBundle(string bundleName)
        {
            while (!ABManifestLoader.Instance.IsLoadFinish())
            {
                yield return(null);
            }
            ABRelationManager abLoader = abDict[bundleName];

            string[] dependence = ABManifestLoader.Instance.GetDependence(bundleName);
            abLoader.SetDependence(dependence);
            for (int i = 0; i < dependence.Length; ++i)
            {
                yield return(AsyncLoadAssetBundleDependences(dependence[i], bundleName, abLoader.GetLoadFinish()));
            }
            yield return(abLoader.AsyncLoadAssetBundle());
        }
Example #4
0
        public void SyncLoadAssetBundle(string bundleName)
        {
            if (abDict.ContainsKey(bundleName))
            {
                return;
            }
            ABRelationManager abLoader = new ABRelationManager(bundleName, null);

            abDict.Add(bundleName, abLoader);
            string[] dependence = ABManifestLoader.Instance.GetDependence(bundleName);
            abLoader.SetDependence(dependence);
            for (int i = 0; i < dependence.Length; ++i)
            {
                SyncLoadAssetBundleDependences(dependence[i], bundleName);
            }
            abLoader.SyncLoadAssetBundle();
        }
Example #5
0
        public void AsyncLoadAssetBundle(string bundleName, LoadFinish loadFinish, LoadAssetBundleCallBack callBack)
        {
            if (abDict.ContainsKey(bundleName))
            {
                if (loadFinish != null)
                {
                    loadFinish(bundleName);
                }
                return;
            }
            ABRelationManager abLoader = new ABRelationManager(bundleName, loadFinish);

            abDict.Add(bundleName, abLoader);
            if (callBack != null)
            {
                callBack(sceneName, bundleName);
            }
        }
Example #6
0
        public void ReleaseAll(string bundleName)
        {
            if (!abDict.ContainsKey(bundleName))
            {
                return;
            }
            List <string> dependence = abDict[bundleName].GetDependence();

            for (int i = 0; i < dependence.Count; ++i)
            {
                ABRelationManager abLoader = abDict[dependence[i]];
                abLoader.RemoveReference(bundleName);
                //当没有引用时,释放
                if (abLoader.GetReference().Count <= 0)
                {
                    DisposeAll(dependence[i]);
                }
            }
            //当没有引用时,释放
            if (abDict[bundleName].GetReference().Count <= 0)
            {
                DisposeAll(bundleName);
            }
        }