Esempio n. 1
0
        /// <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;
                    }
                }
            }
        }
Esempio n. 2
0
 public void OnRelease()
 {
     uniqueID = -1;
     handler  = null;
     complete = null;
     userData = null;
 }
Esempio n. 3
0
 private void OnStartLoadScene()
 {
     currentLoaderData.state = SceneLoaderDataState.Loading;
     assetHandler            = assetLoader.LoadBatchAssetAsync(string.Empty,
                                                               new string[] { currentLoaderData.address }, false,
                                                               null, null, null, null, AssetLoaderPriority.Default, null);
 }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
 public void UnloadAssetAsync(AssetHandler handler, bool destroyIfIsInstnace)
 {
     assetMgr.UnloadAssetAsync(handler, destroyIfIsInstnace);
 }
Esempio n. 8
0
 public void UnloadAssetAsync(AssetHandler handler)
 {
     assetMgr.UnloadAssetAsync(handler, false);
 }