public void ChangeSceneWithLoadScreen(string currentSceneName, string nextSceneName) { LoadScreenOptions options = new LoadScreenOptions(); options.LoadScreenBehvavior = LoadScreenBehvavior.None; ChangeSceneWithLoadScreen(currentSceneName, nextSceneName, () => { }, options); }
private IEnumerator AsyncLoadLoadScreen(string nextSceneName, Action preloadAction, LoadScreenOptions options) { AsyncOperation sceneLoadOperation = SceneManager.LoadSceneAsync("Loading", LoadSceneMode.Additive); while (!sceneLoadOperation.isDone) { yield return(new WaitForEndOfFrame()); } yield return(AsyncLoadSceneWithLoadScreen("Loading", nextSceneName, preloadAction, options)); }
public void LoadSceneWithLoadScreen(string sceneName, Action preloadAction, LoadScreenOptions options) { StartCoroutine(AsyncLoadLoadScreen(sceneName, preloadAction, options)); }
public void LoadSceneWithLoadScreen(string sceneName, LoadScreenOptions options) { StartCoroutine(AsyncLoadLoadScreen(sceneName, () => { }, options)); }
public void ChangeSceneWithLoadScreen(string currentSceneName, string nextSceneName, Action preloadAction, LoadScreenOptions options) { SceneManager.UnloadSceneAsync(currentSceneName); StartCoroutine(AsyncLoadLoadScreen(nextSceneName, preloadAction, options)); }
private IEnumerator AsyncLoadSceneWithLoadScreen(string currentSceneName, string nextSceneName, Action preloadAction, LoadScreenOptions options) { GameObject loadBarGameObject = GameObject.FindGameObjectsWithTag("LoadBar")[0]; Image loadBar = loadBarGameObject.GetComponent <Image>(); loadBar.fillAmount = 0; yield return(new WaitForSeconds(1)); AsyncOperation sceneLoadOperation = SceneManager.LoadSceneAsync(nextSceneName, LoadSceneMode.Additive); sceneLoadOperation.allowSceneActivation = false; while (sceneLoadOperation.progress < 0.9f) { loadBar.fillAmount = (sceneLoadOperation.progress + 0.1f) * 0.5f; } yield return(new WaitForSeconds(1)); preloadAction(); loadBar.fillAmount = 1f; if (options.LoadScreenBehvavior.Equals(LoadScreenBehvavior.WaitSeconds)) { yield return(new WaitForSeconds(options.Seconds)); } else if (options.LoadScreenBehvavior.Equals(LoadScreenBehvavior.SpecificKey)) { while (!sceneLoadOperation.isDone) { if (Input.GetKeyDown(options.KeyCode)) { break; } yield return(null); } } else if (options.LoadScreenBehvavior.Equals(LoadScreenBehvavior.AnyKey)) { while (!sceneLoadOperation.isDone) { if (Input.anyKeyDown) { break; } yield return(null); } } sceneLoadOperation.allowSceneActivation = true; SceneManager.UnloadSceneAsync(currentSceneName); }