| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- using System;
- using ET;
- using UnityEngine;
- using YooAsset;
- namespace GFGGame
- {
- public class UGUIManager : SingletonBase<UGUIManager>
- {
- public GameObject desktop;
- private bool _otherSystemsInitialized = false;
- private bool _uiPackagesLoaded = false;
- public void StartInitialization(Action onComplete = null, Action<string> onError = null)
- {
- // 1. 异步加载 UI Canvas 预制体
- var handle = YooAssets.LoadAssetAsync<GameObject>(ResPathUtil.GetUUIPrefabPath("UICanvas"));
- handle.Completed += (assetHandle) =>
- {
- if (assetHandle.Status != EOperationStatus.Succeed)
- {
- onError?.Invoke($"UICanvas加载失败: {assetHandle.LastError}");
- return;
- }
- // 2. 实例化Canvas并设置为常驻对象
- var canvas = GameObject.Instantiate(assetHandle.GetAssetObject<GameObject>());
- GameObject.DontDestroyOnLoad(canvas);
- desktop = canvas.transform.Find("Desktop").gameObject;
- // 3. 开始初始化其他系统
- InitializeOtherSystems(
- () =>
- {
- Debug.Log("所有系统初始化完成");
- onComplete?.Invoke();
- },
- error => onError?.Invoke(error)
- );
- };
- }
- private void InitializeOtherSystems(Action onComplete, Action<string> onError)
- {
- // 先初始化ViewManager(异步加载UI包)
- ViewManager.Init(
- () =>
- {
- _uiPackagesLoaded = true;
- InitializeRemainingSystems();
- CheckAllInitialized(onComplete);
- },
- error => { onError?.Invoke($"UI包加载失败: {error}"); }
- );
- }
- private void InitializeRemainingSystems()
- {
- try
- {
- // 这些系统可以同步初始化
- LogController.Instance.Init();
- GameGlobal.Init();
- QDManager.Init();
- ViewGlobal.CreatClickEffect();
- GetGameCfg();
- _otherSystemsInitialized = true;
- }
- catch (Exception e)
- {
- Debug.LogError($"系统初始化异常: {e}");
- throw;
- }
- }
- private void CheckAllInitialized(Action onComplete)
- {
- if (_uiPackagesLoaded && _otherSystemsInitialized)
- {
- onComplete?.Invoke();
- }
- }
- /// <summary>
- /// 获取游戏配置
- /// </summary>
- public static void GetGameCfg()
- {
- var url = LauncherConfig.cfgUrl.Replace("{cfgName}", GameGlobal.cfgName);
- url = url + "?t=" + TimeHelper.ClientNow();
- Debug.Log($"正在解压数据");
- LauncherView.Instance.SetDesc("正在解压数据...");
- HttpTool.Instance.Get(url, (string data) =>
- {
- //初始化游戏配置
- GameConfig.InitData(data);
- Debug.Log($"初始化游戏配置");
- //缓存一部分配置文件
- // FightScoreCfgArray.Instance.Init();
- // StudioCfgArray.Instance.Init();
- // DailySignCfgArray.Instance.Init();
- // DailyLoginCfgArray.Instance.Init();
- // DressUpMenuItemCfg2Array.Instance.Init();
- // AdCfgArray.Instance.Init();
- // ItemTypeCfgArray.Instance.Init();
- // GuideCfgArray.Instance.Init();
- // SuitCfgArray.Instance.Init();
- // ShopCfgArray.Instance.Init();
- // SuitFosterCfgArray.Instance.Init();
- // VipCfgArray.Instance.Init();
- // ActivityRechargeCfgArray.Instance.Init();
- // ActivityLuckybonusCfgArray.Instance.Init();
- // Activity7DaysTaskCfgArray.Instance.Init();
- // Activity7DaysCfgArray.Instance.Init();
- // SuitGuideMenuCfgArray.Instance.Init();
- // ActivityRecharge2CfgArray.Instance.Init();
- // SuitFosterListCfgArray.Instance.Init();
- // TaskCfgArray.Instance.Init();
- LauncherView.Instance.Close();
- //显示登录
- LoginController.ShowLogin();
- });
- }
- public void Show()
- {
- }
- public void Hide()
- {
- }
- }
- }
|