Ejemplo n.º 1
0
        /// <summary>
        /// 异步加载场景
        /// </summary>
        /// <param name="assetBundleName"></param>
        /// <param name="sceneName"></param>
        /// <param name="mode"></param>
        /// <returns></returns>

        public async Task <AsyncOperation> LoadSceneAsync(string assetBundleName, string sceneName, LoadSceneMode mode = LoadSceneMode.Single)
        {
            _resourceHelper = GameMode.Resource.GetResourceHelper();

            if (_resourceHelper == null)
            {
                throw new GamekException("You must set resource manager first.");
            }

            if (string.IsNullOrEmpty(sceneName))
            {
                throw new GamekException("Scene asset name is invalid.");
            }

            if (SceneIsLoading(sceneName))
            {
                throw new GamekException(string.Format("Scene asset '{0}' is being loaded.", sceneName));
            }

            if (SceneIsLoaded(sceneName))
            {
                throw new GamekException(string.Format("Scene asset '{0}' is already loaded.", sceneName));
            }

            m_LoadingSceneAssetNames.Add(sceneName);

            AsyncOperation asyncOperation = await _resourceHelper.LoadSceneAsync(assetBundleName, sceneName, mode);

            _sceneAsyncOperations.Add(sceneName, asyncOperation);
            return(asyncOperation);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 异步加载场景
        /// </summary>
        /// <param name="assetBundleName"></param>
        /// <param name="sceneName"></param>
        /// <param name="mode"></param>
        /// <returns></returns>
        public Task <AsyncOperation> LoadSceneAsync(string assetBundleName, string sceneName, LoadSceneMode mode = LoadSceneMode.Additive)
        {
            if (_resourceHelper == null)
            {
                return(null);
            }
            Task <AsyncOperation> asyncOperation = _resourceHelper.LoadSceneAsync(assetBundleName, sceneName, mode);

            _sceneAsyncOperations.Add(sceneName, asyncOperation.Result);
            return(asyncOperation);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 加载场景(异步)
 /// </summary>
 /// <param name="info">场景配置信息</param>
 /// <param name="loadingAction">场景加载中回调</param>
 /// <param name="loadDoneAction">场景加载完成回调</param>
 /// <returns>加载协程</returns>
 public Coroutine LoadScene(SceneInfo info, HTFAction <float> loadingAction = null, HTFAction loadDoneAction = null)
 {
     return(Main.Current.StartCoroutine(_helper.LoadSceneAsync(info, loadingAction, loadDoneAction)));
 }