From 34179ffa10e510ba71522cb2bd1fd978b7fcbbe1 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期四, 16 七月 2026 11:26:37 +0800
Subject: [PATCH] Revert "634 H5适配 获得英雄展示动态立绘的时机放到OnOpen"
---
Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs | 86 ++++++++++++++++++++++++++++++++++--------
1 files changed, 69 insertions(+), 17 deletions(-)
diff --git a/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs b/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs
index 4fb33bd..3a72a4c 100644
--- a/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs
+++ b/Main/System/GuildAtkDefBat/GuildAtkDefBatBattlePanelWin.cs
@@ -39,12 +39,20 @@
private int m_CachedDisplayState;
private List<HA525_tagSCFamilyAtkDefBatInfo.tagSCFamilyAtkDefBatMem> m_SortedDefenders;
private List<HA525_tagSCFamilyAtkDefBatInfo.tagSCFamilyAtkDefBatMem> m_RemainingDefenders;
+ private bool m_DeferBattleScrollerRefresh;
+ private static bool s_HasPendingScrollPosition;
+ private static float s_PendingScrollPosition;
protected override void InitComponent()
{
base.InitComponent();
funPresetDefBtn.AddListener(() =>
{
+ if (GuildAtkDefBatManager.Instance.GetGuildBattleDisplayState() == 3)
+ {
+ SysNotifyMgr.Instance.ShowTip("GuildAtkDefBat7");
+ return;
+ }
FuncPresetManager.Instance.ClickBattlePreset((int)BattlePreSetType.GuildAtkDefBat);
});
funPresetAtkBtn.AddListener(() =>
@@ -101,7 +109,9 @@
else if (displayState == 3)
functionOrder = 1; // 婵�鎴樻湡榛樿鏁屾柟鎴樺満
+ m_DeferBattleScrollerRefresh = true;
base.OnPreOpen();
+ m_DeferBattleScrollerRefresh = false;
scroller.OnRefreshCell += OnRefreshCell;
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
GuildAtkDefBatManager.Instance.OnUpdateAtkDefBatInfoEvent += OnUpdateAtkDefBatInfoEvent;
@@ -125,6 +135,7 @@
{
OnDayRefresh();
Display();
+ RefreshBattleScroller(true);
}
private void OnDayRefresh()
@@ -162,6 +173,11 @@
{
DisplayInfo();
DisplayTime();
+ }
+
+ protected override void NextFrameAfterOpen()
+ {
+ base.NextFrameAfterOpen();
RefreshBattleScroller();
}
@@ -214,7 +230,7 @@
void ShowTop3()
{
- atkCntImage.SetActive(GuildAtkDefBatManager.Instance.BatState == 3);
+ atkCntImage.SetActive(GuildAtkDefBatManager.Instance.GetGuildBattleDisplayState() == 3);
var sortedMembers = GuildAtkDefBatManager.Instance.GetSortedFamilyMembers();
int top3Count = Mathf.Min(top3NameText.Length, sortedMembers.Count);
@@ -237,13 +253,62 @@
protected override void OpenSubUIByTabIndex()
{
+ if (m_DeferBattleScrollerRefresh)
+ return;
+
RefreshBattleScroller();
+ }
+
+ public void SaveScrollPositionForNextOpen()
+ {
+ if (scroller == null || scroller.m_Scorller == null)
+ return;
+
+ s_PendingScrollPosition = scroller.m_Scorller.ScrollPosition;
+ s_HasPendingScrollPosition = true;
}
/// <summary>
/// 鍒锋柊鎴樺満Scroller鏁版嵁
/// </summary>
- private void RefreshBattleScroller()
+ private void RefreshBattleScroller(bool keepScrollPosition = false)
+ {
+ int oldCellCount = scroller.GetNumberOfCells(scroller.m_Scorller);
+ int newCellCount = RefreshBattleScrollerData();
+
+ if (keepScrollPosition && oldCellCount == newCellCount)
+ {
+ scroller.m_Scorller.RefreshActiveCellViews();
+ return;
+ }
+
+ // 閲嶆柊鏋勫缓Scroller
+ scroller.Refresh();
+
+ // 娣诲姞HeaderCell锛堢涓�鏉★級
+ scroller.AddCell(ScrollerDataType.Header, 0);
+
+ // 鍓╀綑鎴愬憳姣�2涓竴缁勬坊鍔燦ormalCell
+ int normalCellCount = newCellCount - 1;
+ for (int i = 0; i < normalCellCount; i++)
+ {
+ scroller.AddCell(ScrollerDataType.Normal, i + 1);
+ }
+
+ scroller.Restart();
+ TryRestorePendingScrollPosition();
+ }
+
+ private void TryRestorePendingScrollPosition()
+ {
+ if (!s_HasPendingScrollPosition || scroller == null || scroller.m_Scorller == null)
+ return;
+
+ scroller.m_Scorller.ScrollPosition = s_PendingScrollPosition;
+ s_HasPendingScrollPosition = false;
+ }
+
+ private int RefreshBattleScrollerData()
{
// 鏍规嵁褰撳墠Tab璁剧疆宸辨柟/鏁屾柟
switch (functionOrder)
@@ -274,21 +339,8 @@
m_RemainingDefenders.Add(m_SortedDefenders[i]);
}
- // 閲嶆柊鏋勫缓Scroller
- scroller.Refresh();
-
- // 娣诲姞HeaderCell锛堢涓�鏉★級
- scroller.AddCell(ScrollerDataType.Header, 0);
-
- // 鍓╀綑鎴愬憳姣�2涓竴缁勬坊鍔燦ormalCell
- int remainingCount = m_RemainingDefenders.Count;
- int normalCellCount = Mathf.CeilToInt((float)remainingCount / 2);
- for (int i = 0; i < normalCellCount; i++)
- {
- scroller.AddCell(ScrollerDataType.Normal, i + 1);
- }
-
- scroller.Restart();
+ int normalCellCount = Mathf.CeilToInt((float)m_RemainingDefenders.Count / 2);
+ return normalCellCount + 1;
}
/// <summary>
--
Gitblit v1.8.0