using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GubaoCell : MonoBehaviour { [SerializeField] Button gbBtn; [SerializeField] ImageEx gbImg; [SerializeField] Image gbBGImg; [SerializeField] UIEffectPlayer gbBGEffect; [SerializeField] UIEffectPlayer gbEffect; [SerializeField] Image canActiveImg; [SerializeField] Text nameText; [SerializeField] Text lvText; [SerializeField] Transform starRect; [SerializeField] Image[] starImgs; [SerializeField] Transform processRect; [SerializeField] Image processImg; [SerializeField] Text processText; [SerializeField] Image fullProcessImg; [SerializeField] Image redImg; public void Display(int quality, int index) { var gubaoID = GubaoManager.Instance.gubaoCollectDict[quality][index]; DisplayByGBID(gubaoID); redImg.SetActive(GubaoManager.Instance.IsRedTip(gubaoID)); } public void Display(int gubaoID) { DisplayByGBID(gubaoID); var gbData = GubaoManager.Instance.TryGetGubaoInfo(gubaoID); int star = 0; if (gbData != null) { star = gbData.GubaoStar; } redImg.SetActive(star < 5 && GubaoManager.Instance.CanStarUpGubao(gubaoID)); } void DisplayByGBID(int gubaoID) { gbBtn.AddListener(() => { UIManager.Instance.OpenWindow(gubaoID); }); var config = GubaoConfig.Get(gubaoID); if (config == null) { Debug.LogError($"找不到古宝ID: {gubaoID}"); return; } int quality = config.GubaoQuality; gbImg.SetOrgSprite(config.Icon, "gbicon"); gbImg.SetNativeSize(); gbBGImg.SetSprite($"GubaoBG{quality}"); var gbData = GubaoManager.Instance.TryGetGubaoInfo(gubaoID); int lv = 0; int star = 0; if (gbData != null) { lv = gbData.GubaoLV; star = gbData.GubaoStar; gbImg.gray = false; canActiveImg.SetActive(false); starRect.SetActive(true); for (int i = 0; i < starImgs.Length; i++) { if (i < star) { starImgs[i].SetActive(true); //循环不同图 int starIndex = star / starImgs.Length * starImgs.Length + i + 1; if (starIndex > star) { starIndex -= starImgs.Length; } starImgs[i].SetSprite($"GubaoStar{starIndex}"); } else { starImgs[i].SetActive(false); } } processRect.SetActive(false); } else { gbImg.gray = true; canActiveImg.SetActive(GubaoManager.Instance.CanActiveGubao(gubaoID)); starRect.SetActive(false); processRect.SetActive(true); var cnt = VirtualPackManager.Instance.GetNoPackItemCount(config.UnlockItemID); float value = cnt*1.0f / config.UnlockItemCnt; processImg.fillAmount = value; fullProcessImg.SetActive(value >= 1); processText.text = $"{cnt}/{config.UnlockItemCnt}"; } gbBGEffect.PlayByArrIndex(quality - 2); if (GubaoManager.Instance.IsActive(gubaoID)) { gbEffect.PlayByArrIndex(quality - 2); } else { gbEffect.Stop(); } nameText.text = config.Name; nameText.color = UIHelper.GetFuncQualityColor(quality); lvText.text = lv == 0 ? "" : Language.Get("L1113", lv); redImg.SetActive(GubaoManager.Instance.IsRedTip(gubaoID)); } }