using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; public class HeroCardCell : MonoBehaviour { [SerializeField] Button heroCardBtn; [SerializeField] Image heroCardBG; [SerializeField] Text lvText; [SerializeField] Image countryImg; [SerializeField] Image jobImg; [SerializeField] UIHeroController heroModel; [SerializeField] Image onStateImg; [SerializeField] RedpointBehaviour redpoint; [SerializeField] Image newImage; //新标识和红点互斥 [SerializeField] Image trainStateImg; [SerializeField] Text nameText; [SerializeField] Image awakeImg; [SerializeField] Text awakeLVText; [SerializeField] List starImgList; string guid; public void Display(int index) { guid = HeroUIManager.Instance.heroSortList[index]; var hero = HeroManager.Instance.GetHero(guid); if (hero == null) { this.gameObject.SetActive(false); return; } this.gameObject.SetActive(true); heroCardBG.SetSprite("herocardbg" + hero.Quality); lvText.text = Language.Get("L1094") + hero.heroLevel.ToString(); var heroConfig = hero.heroConfig; countryImg.SetSprite(HeroUIManager.Instance.GetCountryIconName(heroConfig.Country)); jobImg.SetSprite(HeroUIManager.Instance.GetJobIconName(heroConfig.Class)); heroModel.Create(heroConfig.SkinIDList[hero.SkinIndex], heroConfig.UIScale); onStateImg.SetActive(hero.IsInTeamByTeamType(TeamType.Story)); int teamPos = TeamManager.Instance.GetTeam(TeamType.Story).GetPosition(hero.itemHero.guid); if (teamPos >= 0) { redpoint.redpointId = MainRedDot.HeroCardRedpoint * 10 + teamPos; newImage.SetActive(false); } else { redpoint.redpointId = 0; newImage.SetActive(HeroUIManager.Instance.newHeroIDList.Contains(hero.heroId)); } var funcState = HeroUIManager.Instance.GetFuncState(hero); if (funcState > 0) { trainStateImg.SetActive(true); trainStateImg.SetSprite("herofuncstate" + funcState); } else { trainStateImg.SetActive(false); } nameText.text = hero.breakLevel == 0 ? heroConfig.Name : Language.Get("herocardbreaklv", heroConfig.Name, hero.breakLevel); awakeImg.SetActive(hero.awakeLevel > 0); awakeLVText.text = hero.awakeLevel.ToString(); for (int i = 0; i < starImgList.Count; i++) { if (hero.heroStar == 0 && i == 0) { // 无星级 特殊处理 starImgList[i].SetActive(true); starImgList[i].SetSprite("herostar" + hero.heroStar); } else if ((hero.heroStar - 1) % starImgList.Count >= i) { starImgList[i].SetActive(true); starImgList[i].SetSprite("herostar" + (((hero.heroStar - 1) / starImgList.Count) + 1) * starImgList.Count); } else { starImgList[i].SetActive(false); } } heroCardBtn.AddListener(() => { HeroUIManager.Instance.selectHeroGuid = guid; UIManager.Instance.OpenWindow(); }); } }