Entry.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityEngine.Networking;
  6. using UnityEngine.SceneManagement;
  7. /* 程序启动入口 */
  8. public class Entry : MonoBehaviour
  9. {
  10. void Start()
  11. {
  12. Screen.orientation = ScreenOrientation.AutoRotation;//设置方向为自动(根据需要自动旋转屏幕朝向任何启用的方向。)
  13. Screen.autorotateToLandscapeRight = true; //允许自动旋转到右横屏
  14. Screen.autorotateToLandscapeLeft = true; //允许自动旋转到左横屏
  15. Screen.autorotateToPortrait = false; //不允许自动旋转到纵向
  16. Screen.autorotateToPortraitUpsideDown = false; //不允许自动旋转到纵向上下
  17. Screen.sleepTimeout = SleepTimeout.NeverSleep; //睡眠时间为从不睡眠
  18. //初始化
  19. TextAutoLanguage.Init();
  20. SetTip("正在检测对比软件版本", Color.white);
  21. StartCoroutine(CheckAppVersion());
  22. StartCoroutine(AsyncLoadScene());
  23. }
  24. const string appVersion = "0.0.0";
  25. bool appVersionCheckOK = false;
  26. IEnumerator CheckAppVersion() {
  27. string url = CommonConfig.businessServerURI + "/app/checkAppVersion?appVersion=" + appVersion;
  28. UnityWebRequest request = UnityWebRequest.Get(url);
  29. yield return request.SendWebRequest();
  30. if (request.result == UnityWebRequest.Result.Success) {
  31. appVersionCheckOK = bool.Parse(request.downloadHandler.text);
  32. if (appVersionCheckOK) {
  33. SetTip("软件版本校验成功", Color.green);
  34. } else {
  35. SetTip("请安装最新版本软件", Color.yellow);
  36. DoTweenUtil.CallDelay(2f, () => {
  37. Application.Quit();
  38. });
  39. }
  40. } else {
  41. SetTip("读取服务端软件版本配置失败", Color.red);
  42. DoTweenUtil.CallDelay(2f, () => {
  43. Application.Quit();
  44. });
  45. }
  46. }
  47. IEnumerator AsyncLoadScene() {
  48. //加载场景名
  49. string sceneName = "Login";
  50. if (LoginMgr.HasToken()) {
  51. sceneName = "Home";
  52. }
  53. //异步加载场景
  54. AsyncOperation async = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single);
  55. //阻止当加载完成自动切换
  56. async.allowSceneActivation = false;
  57. while (!async.isDone) {
  58. if (async.progress >= 0.9f) {
  59. if (appVersionCheckOK) {
  60. async.allowSceneActivation = true;
  61. }
  62. }
  63. yield return null;
  64. }
  65. }
  66. [SerializeField] Text tipText;
  67. void SetTip(string text, Color color) {
  68. tipText.text = text;
  69. tipText.color = color;
  70. }
  71. }