UGUIManager.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using System;
  2. using ET;
  3. using GFGGame.Launcher;
  4. using UnityEngine;
  5. using YooAsset;
  6. namespace GFGGame
  7. {
  8. public class UGUIManager : SingletonBase<UGUIManager>
  9. {
  10. public GameObject desktop;
  11. private bool _otherSystemsInitialized = false;
  12. private bool _uiPackagesLoaded = false;
  13. public void StartInitialization(Action onComplete = null, Action<string> onError = null)
  14. {
  15. // 1. 异步加载 UI Canvas 预制体
  16. var handle = YooAssets.LoadAssetAsync<GameObject>(ResPathUtil.GetUUIPrefabPath("UICanvas"));
  17. handle.Completed += (assetHandle) =>
  18. {
  19. if (assetHandle.Status != EOperationStatus.Succeed)
  20. {
  21. onError?.Invoke($"UICanvas加载失败: {assetHandle.LastError}");
  22. return;
  23. }
  24. // 2. 实例化Canvas并设置为常驻对象
  25. var canvas = GameObject.Instantiate(assetHandle.GetAssetObject<GameObject>());
  26. GameObject.DontDestroyOnLoad(canvas);
  27. desktop = canvas.transform.Find("Desktop").gameObject;
  28. // 3. 开始初始化其他系统
  29. InitializeOtherSystems(
  30. () =>
  31. {
  32. Debug.Log("所有系统初始化完成");
  33. onComplete?.Invoke();
  34. },
  35. error => onError?.Invoke(error)
  36. );
  37. };
  38. }
  39. private void InitializeOtherSystems(Action onComplete, Action<string> onError)
  40. {
  41. // 先初始化ViewManager(异步加载UI包)
  42. ViewManager.Init(
  43. () =>
  44. {
  45. _uiPackagesLoaded = true;
  46. InitializeRemainingSystems();
  47. CheckAllInitialized(onComplete);
  48. },
  49. error => { onError?.Invoke($"UI包加载失败: {error}"); }
  50. );
  51. }
  52. private void InitializeRemainingSystems()
  53. {
  54. try
  55. {
  56. // 这些系统可以同步初始化
  57. LogController.Instance.Init();
  58. GameGlobal.Init();
  59. QDManager.Init();
  60. ViewGlobal.CreatClickEffect();
  61. GetGameCfg();
  62. _otherSystemsInitialized = true;
  63. }
  64. catch (Exception e)
  65. {
  66. Debug.LogError($"系统初始化异常: {e}");
  67. throw;
  68. }
  69. }
  70. private void CheckAllInitialized(Action onComplete)
  71. {
  72. if (_uiPackagesLoaded && _otherSystemsInitialized)
  73. {
  74. onComplete?.Invoke();
  75. }
  76. }
  77. /// <summary>
  78. /// 获取游戏配置
  79. /// </summary>
  80. public static void GetGameCfg()
  81. {
  82. var url = LauncherConfig.cfgUrl.Replace("{cfgName}", GameGlobal.cfgName);
  83. url = url + "?t=" + TimeHelper.ClientNow();
  84. LauncherView.Instance.SetDesc("正在解压数据...");
  85. HttpTool.Instance.Get(url, (string data) =>
  86. {
  87. //初始化游戏配置
  88. GameConfig.InitData(data);
  89. Debug.Log($"初始化游戏配置");
  90. //缓存一部分配置文件
  91. // FightScoreCfgArray.Instance.Init();
  92. // StudioCfgArray.Instance.Init();
  93. // DailySignCfgArray.Instance.Init();
  94. // DailyLoginCfgArray.Instance.Init();
  95. // DressUpMenuItemCfg2Array.Instance.Init();
  96. // AdCfgArray.Instance.Init();
  97. // ItemTypeCfgArray.Instance.Init();
  98. // GuideCfgArray.Instance.Init();
  99. // SuitCfgArray.Instance.Init();
  100. // ShopCfgArray.Instance.Init();
  101. // SuitFosterCfgArray.Instance.Init();
  102. // VipCfgArray.Instance.Init();
  103. // ActivityRechargeCfgArray.Instance.Init();
  104. // ActivityLuckybonusCfgArray.Instance.Init();
  105. // Activity7DaysTaskCfgArray.Instance.Init();
  106. // Activity7DaysCfgArray.Instance.Init();
  107. // SuitGuideMenuCfgArray.Instance.Init();
  108. // ActivityRecharge2CfgArray.Instance.Init();
  109. // SuitFosterListCfgArray.Instance.Init();
  110. // TaskCfgArray.Instance.Init();
  111. LauncherView.Instance.Close();
  112. QDJHGameManagerInit.Instance.InitSDK();
  113. QDJGameManager.Instance.Init();
  114. //显示登录
  115. LoginController.ShowLogin();
  116. });
  117. }
  118. public void Show()
  119. {
  120. }
  121. public void Hide()
  122. {
  123. }
  124. }
  125. }