Exemplo n.º 1
0
        private void FirstAsyncLoadAB(ABLoadTask task)
        {
            bool b = LoadAllDependAb(task);

            if (!task.IsScene)
            {
                if (LoadAssetBundle(b, task.AbPath, task.AbRealPath))
                {
                    ABReference abRef = ABReferenceMap[task.AbPath];
                    LauncherEngine.Instance.StartCoroutine(AsyncLoadAsset(abRef, task));
                }
                else
                {
                    LauncherEngine.Instance.StartCoroutine(AsyncLoadAsset(task));
                }
            }
            else
            {
                // 场景只加载ab
                if (LoadAssetBundle(b, task.AbPath, task.AbRealPath))
                {
                    ABReference abRef = ABReferenceMap[task.AbPath];
                    abRef.ReferenceAsc();
                }
            }
        }
Exemplo n.º 2
0
        private UnityEngine.Object FirstSyncLoadAB(ABLoadTask task)
        {
            bool b = LoadAllDependAb(task);

            if (!task.IsScene)
            {
                if (LoadAssetBundle(b, task.AbPath, task.AbRealPath))
                {
                    ABReference abRef = ABReferenceMap[task.AbPath];
                    return(SyncLoadAsset(abRef, task));
                }
                else
                {
                    return(SyncLoadAsset(task));
                }
            }
            else
            {
                // 场景只加载ab
                if (LoadAssetBundle(b, task.AbPath, task.AbRealPath))
                {
                    ABReference abRef = ABReferenceMap[task.AbPath];
                    abRef.ReferenceAsc();
                }
            }
            return(null);
        }
Exemplo n.º 3
0
        private IEnumerator AsyncLoadAsset(ABReference abRef, ABLoadTask task)
        {
            AssetBundleRequest request;

            if (null != task.AbType)
            {
                request = abRef.TheAB.LoadAssetAsync(task.AbName, task.AbType);
            }
            else
            {
                request = abRef.TheAB.LoadAssetAsync(task.AbName);
            }
            while (!request.isDone)
            {
                if (null != task.Progress)
                {
                    task.Progress(request.progress);
                }
                yield return(null);
            }
            yield return(request);

            // 加载完成
            if (request.isDone)
            {
                UnityEngine.Object spawner = request.asset;

                abRef.ReferenceAsc();
                LoadComplete(spawner, task);
            }
        }
Exemplo n.º 4
0
        private UnityEngine.Object SyncLoadAsset(ABReference abRef, ABLoadTask task)
        {
            if (null == abRef.TheAB)
            {
                abRef.ReferenceAsc();
                LoadComplete(null, task);
                return(null);
            }

            UnityEngine.Object spawner = null;
            if (null != task.AbType)
            {
                spawner = abRef.TheAB.LoadAsset(task.AbName, task.AbType);
            }
            else
            {
                spawner = abRef.TheAB.LoadAsset(task.AbName);
            }
            abRef.ReferenceAsc();
            LoadComplete(spawner, task);
            return(spawner);
        }
Exemplo n.º 5
0
        private IEnumerator AsyncLoadAsset(ABReference abRef, ABLoadTask task)
        {
            if (null == abRef.TheAB)
            {
                abRef.ReferenceAsc();
                LoadComplete(null, task);
                yield break;
            }

            AssetBundleRequest request;

            if (null != task.AbType)
            {
                request = abRef.TheAB.LoadAssetAsync(task.AbName, task.AbType);
            }
            else
            {
                request = abRef.TheAB.LoadAssetAsync(task.AbName);
            }
            while (!request.isDone)
            {
                if (null != task.Progress)
                {
                    task.Progress(request.progress);
                }
                yield return(null);
            }
            yield return(request);

            // 加载完成
            if (request.isDone)
            {
                abRef.ReferenceAsc();
                LoadComplete(request.asset, task);
            }
        }