hch
2025-10-22 af6e207c6d185ed66125e85e18c02c63bea597f9
Main/Main.cs
@@ -10,71 +10,130 @@
/// </summary>
public class Main
{
    public static List<IGameSystemManager> managers = new List<IGameSystemManager>();
    /// <summary>
    /// 初始化函数,由Launch类调用
    /// </summary>
    public static void Init()
    {
        Debug.Log("Main.Init() 被调用");
        // 1. 初始化游戏系统
        InitializeGameSystems();
        // 2. 加载配置
        LoadConfigurations();
        // 3. 打开登录界面
        OpenLoginUI();
        var launchWin = UIManager.Instance.GetUI<LaunchWin>();
        if (launchWin != null)
        {
            launchWin.FadeOut();
        }
        SwitchToLoginScene();
    }
    /// <summary>
    /// 初始化游戏系统
    /// </summary>
    private static void InitializeGameSystems()
    private static void SwitchToLoginScene()
    {
        Debug.Log("初始化游戏系统");
        // 这里可以初始化各种游戏系统,如资源管理、UI管理、音频管理等
        // Debug.Log("打开登录界面");
        // UIManager.Instance.OpenWindow<LoginWin>();
        Debug.Log("切换到登录场景");
        ConfigManager.Instance.Init();
        GeneralDefine.Init();
#if UNITY_EDITOR
        SysNotifyMgr.Instance.BeforePlayerDataInitializeEvent();
#endif
        StageManager.Instance.ToLoginScene();
        ClearGameData();
    }
    /// <summary>
    /// 加载配置
    /// </summary>
    private static void LoadConfigurations()
    public static async UniTask InitManagers()
    {
        Debug.Log("加载游戏配置");
        // 这里可以加载游戏配置,如游戏参数、表格数据等
        ReleaseMgrs();
        // 初始化游戏系统
        managers.Add(BattleManager.Instance);
        managers.Add(VirtualPackManager.Instance);
        managers.Add(OtherPlayerDetailManager.Instance);
        managers.Add(RechargeManager.Instance);
        managers.Add(StoreModel.Instance);
        managers.Add(PhantasmPavilionModel.Instance);
        managers.Add(GuildManager.Instance);
        managers.Add(TeamManager.Instance);
        managers.Add(TaskManager.Instance);
        managers.Add(MailManager.Instance);
        managers.Add(PackManager.Instance);
        managers.Add(HappyXBModel.Instance);
        managers.Add(HeroManager.Instance);
        managers.Add(GMCmdManager.Instance);
        managers.Add(GuildEmblemModel.Instance);
        managers.Add(EquipModel.Instance);
        managers.Add(DungeonManager.Instance);
        managers.Add(CustomizedRechargeModel.Instance);
        managers.Add(CustomizedGiftModel.Instance);
        managers.Add(ChatManager.Instance);
        managers.Add(ChatBubbleManager.Instance);
        managers.Add(OfficialRankManager.Instance);
        managers.Add(RankModel.Instance);
        managers.Add(PlayerMainDate.Instance);
        managers.Add(HeroUIManager.Instance);
        managers.Add(InvestModel.Instance);
        managers.Add(BlessLVManager.Instance);
        managers.Add(AutoFightModel.Instance);
        managers.Add(MainLevelManager.Instance);
        managers.Add(BattleSettlementManager.Instance);
        managers.Add(GoldRushManager.Instance);
        managers.Add(FirstChargeManager.Instance);
        managers.Add(NewBieCenter.Instance);
        managers.Add(AdsManager.Instance);
        managers.Add(BoneFieldManager.Instance);
        managers.Add(ArenaManager.Instance);
        foreach (var manager in managers)
        {
            manager.Init();
        }
        await UniTask.Yield();
    }
    public static void OnEnterGameScene()
    {
        // 初始化游戏场景
        Debug.Log("初始化游戏场景");
        foreach (var manager in managers)
        {
            manager.RequestNessaryData();
        }
        UIManager.Instance.CloseWindow<LaunchBackGroundWin>();
        UIManager.Instance.CloseWindow<LoginWin>();
    }
    public static void OnSwitchToLoginScene()
    {
        //  前面有重新InitManagers了 这里就不在做清除
        // ReleaseMgrs();
    }
    private static void ReleaseMgrs()
    {
        foreach (var manager in managers)
        {
            manager.Release();
        }
        managers.Clear();
    }
    /// <summary>
    /// 打开登录界面
    /// </summary>
    private static void OpenLoginUI()
    {
        Debug.Log("关闭加载界面");
    }
        LaunchLoadingWin.Instance.CloseWindow();
        Debug.Log("打开登录界面");
        // 获取Launch中的IsUseSDK标志
        bool isUseSDK = Launch.Instance.IsUseSDK;
        // 根据IsUseSDK标志显示不同的登录界面
        if (isUseSDK)
        {
            Debug.Log("显示SDK登录界面");
            // 在这里实现SDK登录界面的显示逻辑
            // 例如:UIManager.Instance.OpenUI("SDKLoginUI");
        }
        else
        {
            Debug.Log("显示普通登录界面");
            // 在这里实现普通登录界面的显示逻辑
            // 例如:UIManager.Instance.OpenUI("NormalLoginUI");
        }
    //这里清理时机一定是重新登录/切换账号,而不是短暂的断线重连
    static void ClearGameData()
    {
        DTC0403_tagPlayerLoginLoadOK.finishedLogin = false;
        DTC0102_tagCDBPlayer.isAfterPlayerDataInitialize = false;
        ConfirmCancel.toggleCheckDict.Clear();
    }
}