| | |
| | | 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>
|
| | |
| | | /// </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");
|
| | | }
|
| | |
|
| | | }
|
| | | } |