using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace TcgEngine.UI { public class ChangeCoverPanel : UIPanel { public Text coverNameText; public Transform content; public GameObject coverPrefab; // 防止重复点击 public Image clickBlocker; public UserDeckData udeck; private List lineList = new List(); private bool isInit = false; private static ChangeCoverPanel instance; protected override void Awake() { base.Awake(); instance = this; for (int i = 0; i < content.childCount; i++) Destroy(content.GetChild(i).gameObject); } protected override void Start() { base.Start(); } /// /// 生成并排布所有卡片封面 /// private void GenerateCardCovers() { Debug.Log("数据有"+CardCoverData.GetAll().Count); foreach (CardCoverData cover in CardCoverData.GetAll()) { GameObject cardCover = Instantiate(coverPrefab, content); var line = cardCover.GetComponent(); line.SetCover(cover.GetCardCover(), cover.name); line.OnChangeCover += SaveCardCover; lineList.Add(line); } isInit = true; } private void RefreshPanel() { foreach (var line in lineList) { line.RefreshCurrentCover(udeck.cover); } } public void OpenPanel(DeckLine line) { if (!isInit) { GenerateCardCovers(); } Show(); udeck = line.GetUserDeck(); coverNameText.text = udeck.title; RefreshPanel(); } public void SaveCardCover(ChangeCoverLine line) { UserData udata = Authenticator.Get().UserData; udeck.cover = line.coverName; clickBlocker.gameObject.SetActive(true); // ✅ 立即刷新当前 UI RefreshPanel(); // 封面变黄 CollectionPanel.Get().RefreshCover(line.cover); // 卡组封面即时更新 CollectionPanel.Get().SaveDeckAPI(udata, udeck); Hide(); } public override void Show(bool instant = false) { base.Show(instant); clickBlocker.gameObject.SetActive(false); } public static ChangeCoverPanel Get() { return instance; } } }