From d6817a8e01243b4dc77eff33ca5a650ecf723edb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A3=AE2003?= <2384017988@qq.com> Date: Sat, 27 Jun 2026 22:35:16 +0800 Subject: [PATCH] 1 --- .../aa/UI/Home/Sub/UIHome_BY_VIPPanel.cs | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/Assets/MyGame/aa/UI/Home/Sub/UIHome_BY_VIPPanel.cs b/Assets/MyGame/aa/UI/Home/Sub/UIHome_BY_VIPPanel.cs index 733fe3c3f..79f9d6fb2 100644 --- a/Assets/MyGame/aa/UI/Home/Sub/UIHome_BY_VIPPanel.cs +++ b/Assets/MyGame/aa/UI/Home/Sub/UIHome_BY_VIPPanel.cs @@ -38,6 +38,13 @@ public class UIHome_BY_VIPPanel : SubUIBase { base.Awake(); vipConfigs = GameManager.Instance.gameConfig.vipLevelConfigs; + GameManager.Instance.OnUserDataChanged += OnUserDataChanged; + } + + private void OnUserDataChanged() + { + vipLevel = GameManager.Instance.user.assets.vipLevel; + // 打开时 OnShow 会重建所有,这里不需要额外处理 } protected override void OnShow(object args = null) @@ -47,18 +54,15 @@ public class UIHome_BY_VIPPanel : SubUIBase if (vipConfigs == null || vipConfigs.Count == 0) return; var assets = GameManager.Instance.user.assets; - var staticInfo = GameManager.Instance.user.@static; vipLevel = assets.vipLevel; - // 直接清除旧选项 + 构建新选项 + // 先清除旧选项再重建 BuildLevelTabs(); - // 强制选中当前 VIP 等级并刷新数据 - UpdateVIPPanel(vipLevel); + // 通过设置 toggle.isOn 触发 onValueChanged → 自动调用 UpdateVIPPanel for (int i = 0; i < btn_LeaveItemParent.childCount; i++) { - int level = vipConfigs[i].level; - if (level == vipLevel) + if (vipConfigs[i].level == vipLevel) { btn_LeaveItemParent.GetChild(i).GetComponent().isOn = true; break; @@ -68,9 +72,9 @@ public class UIHome_BY_VIPPanel : SubUIBase private void BuildLevelTabs() { - // 清空旧选项(立即销毁避免残留) + // 清空旧选项 for (int i = btn_LeaveItemParent.childCount - 1; i >= 0; i--) - DestroyImmediate(btn_LeaveItemParent.GetChild(i).gameObject); + Destroy(btn_LeaveItemParent.GetChild(i).gameObject); foreach (var item in vipConfigs) {