From 51b0f6ed9f4e1d3bb6f8144470b46908c7699a96 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 11 五月 2026 16:20:37 +0800
Subject: [PATCH] Merge branch 'master' into h5version

---
 Main/System/HeroUI/HeroPosWin.cs |   79 ++++++++++++++++++++++++++++++++++-----
 1 files changed, 69 insertions(+), 10 deletions(-)

diff --git a/Main/System/HeroUI/HeroPosWin.cs b/Main/System/HeroUI/HeroPosWin.cs
index c911e34..88ba5aa 100644
--- a/Main/System/HeroUI/HeroPosWin.cs
+++ b/Main/System/HeroUI/HeroPosWin.cs
@@ -43,6 +43,11 @@
     [SerializeField] Transform caseesObj;
     FuncPresetChooseCells presetChooseCells;
 
+    Action presetChooseCellssetOnLoaded;
+
+    [SerializeField] Button funPresetBtn;
+
+
     Sequence sequence;
     CancellationTokenSource _cts;
     Queue<int> showConnectTipQueue = new Queue<int>();
@@ -80,21 +85,39 @@
         countryOnBtn.AddListener(() =>
         {
             HeroUIManager.Instance.isCustonHeroFormation = false;
-            UIManager.Instance.OpenWindow<HeroFormationWin>();
+            UIManager.Instance.OpenWindowAsync<HeroFormationWin>().Forget();
         });
 
         lineupRecommendBtn.AddListener(() =>
         {
-            UIManager.Instance.OpenWindow<LineupRecommendWin>();
+            UIManager.Instance.OpenWindowAsync<LineupRecommendWin>().Forget();
         });
 
         m_IsToggleOn = LocalSave.GetBool("ShowConn" + PlayerDatas.Instance.baseData.PlayerID, false);
-        fiterManager = HeroSelectBehaviour.Create(heroSelectBehaviour);
 
-        var presetObj = UIUtility.CreateWidget("FuncPresetChooseCells", "FuncPresetChooseCells");
-        presetObj.transform.SetParentEx(caseesObj, Vector3.zero, Quaternion.identity, Vector3.one);
-        presetChooseCells = presetObj.GetComponent<FuncPresetChooseCells>();
-        presetChooseCells.ChangeAlignment(TextAnchor.MiddleCenter);
+
+        UIUtility.CreateWidget("FuncPresetChooseCells", "FuncPresetChooseCells").ContinueWith(presetObj =>
+        {
+            if (this == null)
+            {
+                if (presetObj != null)
+                {
+                    GameObject.DestroyImmediate(presetObj);
+                }
+                return;
+            }
+            presetObj.transform.SetParentEx(caseesObj, Vector3.zero, Quaternion.identity, Vector3.one);
+            presetChooseCells = presetObj.GetComponent<FuncPresetChooseCells>();
+            presetChooseCells.ChangeAlignment(TextAnchor.MiddleCenter);
+            presetChooseCellssetOnLoaded?.Invoke();
+            presetChooseCellssetOnLoaded = null;
+        }).Forget();
+
+
+        funPresetBtn.AddListener(()=>
+        {
+            FuncPresetManager.Instance.ClickBattlePreset((int)BattlePreSetType.Story);
+        });
     }
 
 
@@ -158,10 +181,44 @@
         RefreshEmptyTip();
 
         showConnTipToggleBtn.isOn = isToggleOn;
-        fiterManager.Display(0, SelectJobCountry);
+        if (null != fiterManager)
+        {
+            fiterManager.Display(0, SelectJobCountry);
+        }
+        else
+        {
+            HeroSelectBehaviour.Create(heroSelectBehaviour).ContinueWith(fmgr =>
+            {
+                if (this == null)
+                {
+                    if (fmgr != null)
+                    {
+                        GameObject.DestroyImmediate(fmgr.gameObject);
+                    }
+                    return;
+                }
+                fiterManager = fmgr;
+                fiterManager.Display(0, SelectJobCountry);
+            }).Forget();   
+        }
         fightPowerText.text = UIHelper.ReplaceLargeArtNum(FightPowerManager.Instance.GetTeamFightPower(HeroUIManager.Instance.selectTeamType, true));
 
-        presetChooseCells.Display((int)BattlePreSetType.Story, (int)FuncPresetType.Team);
+        if (null == presetChooseCells)
+        {
+            presetChooseCellssetOnLoaded = () =>
+            {
+                if (this == null)
+                    return;
+                presetChooseCells.Display((int)BattlePreSetType.Story, (int)FuncPresetType.Team);
+            };
+        }
+        else
+        {
+            presetChooseCells.Display((int)BattlePreSetType.Story, (int)FuncPresetType.Team);
+        }
+
+
+        funPresetBtn.SetActive(FuncPresetManager.Instance.IsPreShow());
     }
 
     void RefreshFlyHead()
@@ -342,7 +399,7 @@
 
 
             flyAlphaTween.alpha = 1;
-            flyHead.Init(flyHero.heroId, flyHero.SkinID);
+            flyHead.Init(flyHero.heroId, flyHero.SkinID).Forget();
             flyHead.transform.position = startPos;
             var targetPos = scenePosImgs[posList[0]].transform.position;
             flyHead.transform.localScale = Vector3.one;
@@ -384,6 +441,7 @@
             while (showConnectTipQueue.Count > 0)
             {
                 await UniTask.Delay(300, cancellationToken: token);
+                if (this == null) return; // destroyed during await
                 showConnectTipQueue.TryDequeue(out int fetterID);
                 if (fetterID == 0)
                 {
@@ -393,6 +451,7 @@
                 connetionForm.Display(fetterID);
                 //鏄剧ず1.5绉掑悗鍏抽棴
                 await UniTask.Delay(1500, cancellationToken: token);
+                if (this == null) return; // destroyed during await
                 connetionForm.SetActive(false);
             }
 

--
Gitblit v1.8.0