yyl
2025-07-18 cc074976c8644508d80abafbfa8de5d31146abdf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
 
public class HeroCardCell : MonoBehaviour
{
    [SerializeField] Button heroCardBtn;
    [SerializeField] Image heroCardBG;
    [SerializeField] Material glowMaterial; // 流光效果材质
    [SerializeField] Text lvText;
    [SerializeField] Image countryImg;
    [SerializeField] Image jobImg;
    [SerializeField] UIHeroController heroModel;
    [SerializeField] Image onStateImg;
    [SerializeField] RedpointBehaviour redpoint;
    [SerializeField] Image trainStateImg;
    [SerializeField] Text nameText;
    [SerializeField] Image awakeImg;
    [SerializeField] Text awakeLVText;
    [SerializeField] List<Image> starImgList;
 
    public void Display(int index)
    {
        var hero = HeroManager.Instance.GetHero(HeroManager.Instance.heroSortList[index]);
        if (hero == null)
        {
            this.gameObject.SetActive(false);
            return;
        }
        
        this.gameObject.SetActive(true);
        heroCardBG.SetSprite("herocardbg" + hero.Quality);
        if (glowMaterial != null)
        {
            heroCardBG.material = glowMaterial;
        }
        lvText.text = Language.Get("L1094") + hero.heroLevel.ToString();
        var heroConfig = hero.heroConfig;
        countryImg.SetSprite("herocountry" + heroConfig.Country);
        jobImg.SetSprite("herojob" + heroConfig.Class);
        heroModel.Create(heroConfig.SkinIDList[hero.SkinIndex], heroConfig.UIScale);
        onStateImg.SetActive(hero.isInMainBattle);
 
        redpoint.redpointId = MainRedDot.HeroCardRedpoint * 1000 + hero.itemHero.gridIndex;
        var funcState = hero.funcState;
        if (funcState > 0)
        { 
            trainStateImg.SetActive(true);
            trainStateImg.SetSprite("herofuncstate" + hero.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);
            }
        }
    }
}