/// <summary> /// 停止资源加载 /// </summary> /// <param name="handler"></param> /// <param name="destroyIfIsInstnace"></param> internal void UnloadAssetAsync(AssetHandler handler, bool destroyIfIsInstnace) { //判断需要停止的是否还尚未开始加载 if (dataWaitingQueue.Count > 0) { foreach (var data in dataWaitingQueue) { if (data.Handler == handler) { dataWaitingQueue.Remove(data); dataPool.Release(data); return; } } } if (dataLoadingList.Count > 0) { foreach (var data in dataLoadingList) { if (data.Handler == handler) { data.DoCancel(destroyIfIsInstnace); return; } } } }
public void OnRelease() { uniqueID = -1; handler = null; complete = null; userData = null; }
private void OnStartLoadScene() { currentLoaderData.state = SceneLoaderDataState.Loading; assetHandler = assetLoader.LoadBatchAssetAsync(string.Empty, new string[] { currentLoaderData.address }, false, null, null, null, null, AssetLoaderPriority.Default, null); }
/// <summary> /// 停止正在加载中的资源 /// 如果资源已经加载完毕,调用后没有任何效果,只需要使用Destroy销毁资源即可。 /// 如果资源在加载中,则会终止资源的回调(对于使用AB加载的话,由于Unity底层接口无法停止的问题, /// 所以并不会真正停止,只是不再回调加载完成后的接口),如果此资源需要实例化,则会根据<paramref name="destroyIfIsInstnace"/> /// 来判断是否删除已经实例化的资源 /// </summary> /// <param name="handler">调用加载接口后返回的Handler</param> /// <param name="destroyIfIsInstnace">如果资源需要实例化时,对于已经实例化的实例是否需要删除,如果指定为true,则会调用Destroy销毁</param> public void UnloadAssetAsync(AssetHandler handler, bool destroyIfIsInstnace = false) { if (assetLoader == null) { DebugLog.Error(AssetConst.LOGGER_NAME, "AssetManager::UnloadAssetAsync->assetLoader is Null"); return; } assetLoader.UnloadAssetAsync(handler, destroyIfIsInstnace); }
public int InstanceAsset(string[] addresses, OnAssetBridgeLoadComplete complete, SystemObject userData = null) { AssetBridgeData bridgeData = bridgeDataPool.Get(); bridgeData.uniqueID = idCreator.GetNextID(); bridgeData.complete = complete; bridgeData.userData = userData; AssetHandler handler = assetService.InstanceBatchAssetAsync(addresses, null, null, null, OnBatchAssetComplete, loaderPriority, bridgeData.uniqueID); bridgeData.handler = handler; bridgeDataDic.Add(bridgeData.uniqueID, bridgeData); return(bridgeData.uniqueID); }
private void OnLoadingScene() { if (assetHandler.IsDone) { currentLoaderData.DoProgress(ASSET_LOADING_RATE); assetHandler = null; currentLoaderData.state = SceneLoaderDataState.Instancing; asyncOperation = SceneManager.LoadSceneAsync(currentLoaderData.sceneName, currentLoaderData.sceneMode); } else { currentLoaderData.DoProgress(assetHandler.Progress * ASSET_LOADING_RATE); } }
public void UnloadAssetAsync(AssetHandler handler, bool destroyIfIsInstnace) { assetMgr.UnloadAssetAsync(handler, destroyIfIsInstnace); }
public void UnloadAssetAsync(AssetHandler handler) { assetMgr.UnloadAssetAsync(handler, false); }