protected IEnumerator InitializeLevelAsync(string sceneAssetBundle, string levelName, bool isAdditive, System.Action <object> OnSceneLoadCompleted, object obj, System.Action <string> OnSceneLoadError) { // This is simply to get the elapsed time for this phase of AssetLoading. float startTime = Time.realtimeSinceStartup; // Load level from assetBundle. AssetLoadOperation request = AssetManager.LoadLevelAsync(sceneAssetBundle, levelName, isAdditive); if (request == null) { if (null != OnSceneLoadError) { OnSceneLoadError(levelName); } yield break; } yield return(StartCoroutine(request)); Scene_AsyncOperation = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(levelName, UnityEngine.SceneManagement.LoadSceneMode.Single); Scene_AsyncOperation.allowSceneActivation = false; yield return(Scene_AsyncOperation); if (null != OnSceneLoadCompleted) { OnSceneLoadCompleted(obj); } // Calculate and display the elapsed time. float elapsedTime = Time.realtimeSinceStartup - startTime; Debug.Log("Finished loading scene " + levelName + " in " + elapsedTime + " seconds"); }
/// <summary> /// Loads the level async. /// </summary> /// <returns>The level async.</returns> /// <param name="assetBundleName">Asset bundle name.</param> /// <param name="levelName">Level name.</param> /// <param name="isAdditive">If set to <c>true</c> is additive.</param> public static AssetLoadOperation LoadLevelAsync(string assetBundleName, string levelName, bool isAdditive) { AssetLoadOperation operation = null; #if UNITY_EDITOR if (SimulateAssetBundleInEditor) { operation = new AssetBundleLoadLevelSimulationOperation(assetBundleName, levelName, isAdditive); } else #endif { CollectionDependenciesLoadTask(assetBundleName); operation = new AssetBundleLoadLevelOperation(assetBundleName, levelName, isAdditive); m_InProgressOperations.Add(operation); } return(operation); }