TransitionUI.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityEngine.SceneManagement;
  6. namespace SoftKitty.MasterCharacterCreator
  7. {
  8. public class TransitionUI : MonoBehaviour
  9. {
  10. #region variables
  11. public static Scene LastScene;
  12. public static TransitionUI instance;
  13. public static string NextScene;
  14. public CanvasGroup LoadingCanvas;
  15. public AudioListener Listener;
  16. public Image ProgressMask;
  17. #endregion
  18. IEnumerator Start()
  19. {
  20. SoundManager.Play2D("SwitchScene");
  21. instance = this;
  22. LoadingCanvas.alpha = 0F;
  23. yield return 1;
  24. while (LoadingCanvas.alpha< 1F) {
  25. LoadingCanvas.alpha = Mathf.MoveTowards(LoadingCanvas.alpha, 1F,Time.deltaTime);
  26. yield return 1;
  27. }
  28. LoadingCanvas.alpha = 1F;
  29. SceneManager.SetActiveScene(SceneManager.GetSceneByName("Transition"));
  30. yield return SceneManager.UnloadSceneAsync(LastScene);
  31. Listener.enabled = true;
  32. AsyncOperation operation = SceneManager.LoadSceneAsync(NextScene, LoadSceneMode.Additive);
  33. while (!operation.isDone)
  34. {
  35. yield return 1;
  36. ProgressMask.fillAmount = operation.progress;
  37. }
  38. Listener.enabled = false;
  39. ProgressMask.fillAmount = 1F;
  40. while (LoadingCanvas.alpha > 0F)
  41. {
  42. LoadingCanvas.alpha = Mathf.MoveTowards(LoadingCanvas.alpha, 0F, Time.deltaTime*2F);
  43. yield return 1;
  44. }
  45. yield return SceneManager.UnloadSceneAsync(SceneManager.GetSceneByName("Transition"));
  46. }
  47. }
  48. }