loadingScreen.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using LightReflectiveMirror;
  2. using Mirror;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Threading.Tasks;
  6. using UnityEngine;
  7. using UnityEngine.Events;
  8. using UnityEngine.SceneManagement;
  9. using UnityEngine.UI;
  10. public class loadingScreen : MonoBehaviour
  11. {
  12. public string sceneName;
  13. public RectTransform loadingWheel;
  14. public RectTransform loadingProgress;
  15. CanvasGroup canvasGroup;
  16. private LightReflectiveMirrorTransport _LRM;
  17. public void show()
  18. {
  19. canvasGroup.blocksRaycasts = canvasGroup.interactable = true;
  20. }
  21. public void hide()
  22. {
  23. canvasGroup.blocksRaycasts = canvasGroup.interactable = false;
  24. }
  25. void Start()
  26. {
  27. DontDestroyOnLoad(gameObject);
  28. canvasGroup = GetComponent<CanvasGroup>();
  29. if (_LRM == null)
  30. {
  31. _LRM = (LightReflectiveMirrorTransport)Transport.activeTransport;
  32. }
  33. }
  34. AsyncOperation loadingOperation;
  35. // Update is called once per frame
  36. void Update()
  37. {
  38. loadingWheel.Rotate(new Vector3(0, 0, 1f));
  39. if (loading)
  40. {
  41. loadingProgress.sizeDelta = new Vector2(165f * loadingOperation.progress, loadingProgress.sizeDelta.y);
  42. }
  43. if (canvasGroup.interactable && canvasGroup.alpha < 1)
  44. {
  45. canvasGroup.alpha += 0.01f;
  46. }
  47. if(!canvasGroup.interactable && canvasGroup.alpha > 0)
  48. {
  49. canvasGroup.alpha -= 0.01f;
  50. }
  51. }
  52. bool loading = false;
  53. public bool isHost= true;
  54. public async void load()
  55. {
  56. show();
  57. await Task.Delay(1000);
  58. loading = true;
  59. loadingProgress.sizeDelta = new Vector2(0, loadingProgress.sizeDelta.y);
  60. SceneManager.sceneLoaded += SceneManager_sceneLoaded;
  61. loadingOperation = SceneManager.LoadSceneAsync(sceneName);
  62. }
  63. private void SceneManager_sceneLoaded(Scene arg0, LoadSceneMode arg1)
  64. {
  65. if (loading)
  66. {
  67. // hide();
  68. if(isHost){host();}else{join();}
  69. loading = false;
  70. }
  71. }
  72. public string serverName;
  73. public bool isPublic;
  74. void host()
  75. {
  76. _LRM.serverName = serverName;
  77. _LRM.extraServerData = sceneName;
  78. _LRM.isPublicServer = isPublic;
  79. _LRM.ServerStart();
  80. NetworkManager.singleton.StartHost();
  81. }
  82. void join()
  83. {
  84. NetworkManager.singleton.networkAddress = serverName;
  85. NetworkManager.singleton.StartClient();
  86. }
  87. }