using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class BattleDetailHeroInfoItem : MonoBehaviour { [SerializeField] ImageEx imgHeadBg; [SerializeField] ImageEx imgHead; [SerializeField] TextEx txtLV; [SerializeField] ImageEx imgCountry; [SerializeField] List starImgList; [SerializeField] ImageEx imgMask; [SerializeField] TextEx txtHeroName; [SerializeField] ImageEx imgMVP; [SerializeField] ImageEx imgAtkHurt; [SerializeField] TextEx txtAtkHurt; [SerializeField] ImageEx imgDefHurt; [SerializeField] TextEx txtDefHurt; [SerializeField] ImageEx imgCureHP; [SerializeField] TextEx txtCureHP; public void Display(BattleDetailHeroInfoItemData data) { if (data == null || data.info == null) return; BattleDetailHeroInfo info = data.info; int heroID = info.HeroID; if (!HeroConfig.HasKey(heroID)) return; HeroConfig heroConfig = HeroConfig.Get(heroID); int skinID = info.Skin; if (!HeroSkinConfig.HasKey(skinID)) return; HeroSkinConfig skinConfig = HeroSkinConfig.Get(skinID); bool isDead = info.Dead == 1; imgMask.SetActive(isDead); imgMVP.SetActive(data.index == data.mvpIndex); imgHeadBg.SetSprite("heroheadBG" + heroConfig.Quality); var sprite = UILoader.LoadSprite("HeroHead", skinConfig.SquareIcon); if (sprite == null) { imgHead.SetSprite("herohead_default"); } else { imgHead.overrideSprite = sprite; } imgCountry.SetSprite(HeroUIManager.Instance.GetCountryIconName(heroConfig.Country)); txtHeroName.text = heroConfig.Name; txtLV.text = StringUtility.Concat(Language.Get("L1094"), info.LV.ToString()); DisplayStars(info.Star); DisplaySlider(imgAtkHurt, txtAtkHurt, info.AtkHurt, data.maxAtk); DisplaySlider(imgDefHurt, txtDefHurt, info.DefHurt, data.maxDef); DisplaySlider(imgCureHP, txtCureHP, info.CureHP, data.maxCure); } private void DisplaySlider(ImageEx imgSlider, TextEx txtSlider, ulong value, ulong maxValue) { if (maxValue > 0) { ulong safeValue = value > maxValue ? maxValue : value; double ratioDouble = (double)safeValue / maxValue; imgSlider.fillAmount = (float)ratioDouble; } else { imgSlider.fillAmount = 0.0f; } txtSlider.text = UIHelper.ReplaceLargeNum(value); } void DisplayStars(int starCnt) { for (int i = 0; i < starImgList.Count; i++) { if (starCnt == 0 && i == 0) { // 无星级 特殊处理 starImgList[i].SetActive(true); starImgList[i].SetSprite("herostar" + starCnt); } else if ((starCnt - 1) % starImgList.Count >= i) { starImgList[i].SetActive(true); starImgList[i].SetSprite("herostar" + (((starCnt - 1) / starImgList.Count) + 1) * starImgList.Count); } else { starImgList[i].SetActive(false); } } } }