private void UpdateStatus(AsyncSceneGroup asyncSceneGroup, int i) { Assert.IsNotNull(asyncSceneGroup); AsyncSceneGroup.AsyncScene asyncScene = asyncSceneGroup.AsyncScenes[i]; // LoadAndActivationMode.Separate cases if (asyncScene.Status == LoadStatus.Loading && asyncScene.AsyncOperation.progress >= 0.9f) { asyncScene.Status = LoadStatus.Loaded; } if (asyncScene.Status == LoadStatus.Activating && asyncScene.AsyncOperation.isDone) { asyncScene.Status = LoadStatus.Activated; } // LoadAndActivationMode.Joint cases if (asyncScene.Status == LoadStatus.LoadingAndActivating && asyncScene.AsyncOperation.isDone) { asyncScene.Status = LoadStatus.Activated; } if (asyncScene.Status == LoadStatus.Unloading && asyncScene.AsyncOperation.isDone) { asyncScene.Status = LoadStatus.Unloaded; } }
private void ActivateSceneAsync(AsyncSceneGroup asyncSceneGroup, int i) { Assert.IsNotNull(asyncSceneGroup); Assert.AreEqual(LoadAndActivationMode.Separate, loadAndActivationMode); AsyncSceneGroup.AsyncScene asyncScene = asyncSceneGroup.AsyncScenes[i]; Assert.AreEqual(LoadStatus.Loaded, asyncScene.Status); asyncScene.AsyncOperation.allowSceneActivation = true; asyncScene.Status = LoadStatus.Activating; }
private void UnloadSceneAsync(AsyncSceneGroup asyncSceneGroup, int i) { Assert.IsNotNull(asyncSceneGroup); AsyncSceneGroup.AsyncScene asyncScene = asyncSceneGroup.AsyncScenes[i]; Assert.AreEqual(LoadStatus.Activated, asyncScene.Status); AsyncOperation op = SceneManager.UnloadSceneAsync(asyncScene.Scene); asyncScene.AsyncOperation = op; asyncScene.Status = LoadStatus.Unloading; }
private void LoadSceneAsync(AsyncSceneGroup asyncSceneGroup, int i) { Assert.IsNotNull(asyncSceneGroup); AsyncSceneGroup.AsyncScene asyncScene = asyncSceneGroup.AsyncScenes[i]; Assert.AreEqual(LoadStatus.NotLoaded, asyncScene.Status); AsyncOperation op = SceneManager.LoadSceneAsync(asyncSceneGroup.SceneGroup.Scenes[i].SceneName, UnityEngine.SceneManagement.LoadSceneMode.Additive); if (loadAndActivationMode == LoadAndActivationMode.Separate) { op.allowSceneActivation = false; } asyncScene.AsyncOperation = op; asyncScene.Status = ((loadAndActivationMode == LoadAndActivationMode.Separate) ? LoadStatus.Loading : LoadStatus.LoadingAndActivating); asyncScene.Scene = SceneManager.GetSceneAt(SceneManager.sceneCount - 1); }
private bool IsAsyncOperationInProgress(AsyncSceneGroup asyncSceneGroup, int i) { Assert.IsNotNull(asyncSceneGroup); AsyncSceneGroup.AsyncScene asyncScene = asyncSceneGroup.AsyncScenes[i]; return(IsAsyncOperationInProgress(asyncScene.Status)); }