yyl
2025-07-18 cc074976c8644508d80abafbfa8de5d31146abdf
Main/Manager/StageManager.cs
@@ -13,14 +13,23 @@
{
    public StageName currentStage;
    public Action AfterLoadingGameScene;
    public Action BeforeLoadingGameScene;
    // public Action OnSwitchAccount;
    private LaunchWinData launchWinData = null;
    public void Init()
    {
        UIManager.Instance.OnCloseWindow += OnCloseWindow;
    }
    public void Release()
    {
        AfterLoadingGameScene = null;
        BeforeLoadingGameScene = null;
        UIManager.Instance.OnCloseWindow -= OnCloseWindow;
    }
    public async UniTaskVoid ToLoginScene()
@@ -29,12 +38,12 @@
        AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("Login");
        await OnLoading(asyncOperation, ConfigManager.Instance.GetLoadingProgress);
        await OnLoading(asyncOperation, ConfigManager.Instance.GetLoadingProgress, Main.InitManagers);
        Main.OnSwitchToLoginScene();
        currentStage = StageName.Login;
        UIManager.Instance.OpenWindow<LaunchBackGroundWin>();
        UIManager.Instance.OpenWindow<LoginWin>();
    }
@@ -63,15 +72,21 @@
    public async UniTaskVoid ToGameScene()
    {
        UIManager.Instance.DestroyAllUI();
        BeforeLoadingGameScene?.Invoke();
        ResManager.Instance.PrewarmResources();
        // ResManager.Instance.PrewarmResources();
        AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("Game");
        await OnLoading(asyncOperation, GetManagerRequestDataProgress);
        await OnLoading(asyncOperation, () => (DTC0403_tagPlayerLoginLoadOK.finishedLogin ? .5f : 0f) + GetManagerRequestDataProgress() * .5f);
        //  加载初始化数据完成
        currentStage = StageName.Game;
        Main.OnEnterGameScene();
        AfterLoadingGameScene?.Invoke();
        UIManager.Instance.OpenWindow<MainWin>();
    }
@@ -81,6 +96,18 @@
        asyncOperation.allowSceneActivation = false;
        LoadingWin loadingWin = UIManager.Instance.OpenWindow<LoadingWin>();
        LaunchWin launchWin = UIManager.Instance.GetUI<LaunchWin>();
        if (null != launchWin && launchWin.IsActive() && launchWinData == null)
        {
            launchWinData = launchWin.GetData();
        }
        if (null != launchWinData)
        {
            loadingWin.SetData(launchWinData);
            launchWinData = null;
        }
        while (!asyncOperation.isDone)
        {
@@ -116,4 +143,12 @@
        loadingWin.CloseWindow();
    }
    private void OnCloseWindow(UIBase closeUI)
    {
        if (closeUI is LaunchWin)
        {
            launchWinData = (closeUI as LaunchWin).GetData();
        }
    }
}