yyl
2025-05-07 f43e38880a7255d07cccfc313146c3f397fcf505
Main/Main.cs
@@ -4,49 +4,81 @@
using UnityEngine;
using Cysharp.Threading;
using Cysharp.Threading.Tasks;
using System.Threading.Tasks;
/// <summary>
/// Main类,作为热更新程序集的入口点
/// </summary>
public class Main
{
    public static List<IGameSystemManager> managers = new List<IGameSystemManager>();
    /// <summary>
    /// 初始化函数,由Launch类调用
    /// </summary>
    public static void Init()
    public static async UniTask Init()
    {
        Debug.Log("Main.Init() 被调用");
        // 1. 初始化游戏系统
        InitializeGameSystems();
        // 2. 加载配置
        LoadConfigurations();
        // 3. 打开登录界面
        OpenLoginUI();
        await InitSystems();
        Debug.Log("关闭加载界面");
        LaunchLoadingWin.Instance.CloseWindow();
        SwitchToLoginScene();
    }
    /// <summary>
    /// 初始化游戏系统
    /// </summary>
    private static void InitializeGameSystems()
    private static async UniTask InitSystems()
    {
        Debug.Log("初始化游戏系统");
        // 这里可以初始化各种游戏系统,如资源管理、UI管理、音频管理等
        // 这里可以初始化大型系统 贯穿整个游戏的系统
        await ResManager.Instance.Init();
        UIManager.Instance.Init();
        StageManager.Instance.Init();
        LoginManager.Instance.Init();
    }
    /// <summary>
    /// 加载配置
    /// </summary>
    private static void LoadConfigurations()
    private static void SwitchToLoginScene()
    {
        Debug.Log("加载游戏配置");
        // 这里可以加载游戏配置,如游戏参数、表格数据等
        // Debug.Log("打开登录界面");
        // UIManager.Instance.OpenWindow<LoginWin>();
        Debug.Log("切换到登录场景");
        ConfigManager.Instance.Init();
        StageManager.Instance.ToLoginScene();
    }
    public static void OnEnterGameScene()
    {
        // 初始化游戏场景
        Debug.Log("初始化游戏场景");
        // 初始化游戏系统
        managers.Add(PlaceManager.Instance);
        managers.Add(BattleManager.Instance);
        managers.Add(TeamManager.Instance);
        foreach (var manager in managers)
        {
            manager.Init();
        }
        foreach (var manager in managers)
        {
            manager.RequestNessaryData();
        }
    }
    public static void OnSwitchToLoginScene()
    {
        foreach (var manager in managers)
        {
            manager.Release();
        }
        managers.Clear();
    }
    
    /// <summary>
@@ -54,27 +86,8 @@
    /// </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");
        }
    }
}