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(); } } }
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); }
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); } }
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); }
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); } }