Files
5.24BuYu/Assets/MyGame/aa/UI/Home/Sub/Rank/RankLineItem.cs
T

64 lines
1.9 KiB
C#
Raw Normal View History

2026-06-21 18:20:55 +08:00
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class RankLineItem : MonoBehaviour
{
public GameObject obj_rankNum;
public TextMeshProUGUI userName;
public TextMeshProUGUI userLevel;
public TextMeshProUGUI userScore;
public Image avatar;
2026-06-21 22:38:18 +08:00
private string myAvatarName;
private void OnEnable()
2026-06-21 18:20:55 +08:00
{
2026-06-21 22:38:18 +08:00
GameManager.Instance.OnAvatarChanged += OnAvatarChanged;
}
private void OnDisable()
{
if (GameManager.Instance != null)
GameManager.Instance.OnAvatarChanged -= OnAvatarChanged;
}
private void OnAvatarChanged(Sprite sprite)
{
// 如果换的头像和本行用户的 avatarUrl 一致,自动刷新
if (!string.IsNullOrEmpty(myAvatarName) && sprite != null)
2026-06-21 18:20:55 +08:00
{
2026-06-21 22:38:18 +08:00
var cached = GameManager.Instance.GetAvatarSprite(myAvatarName);
if (cached != null) avatar.sprite = cached;
2026-06-21 18:20:55 +08:00
}
2026-06-21 22:38:18 +08:00
}
public void Init(int rankNum, string name, string level, string score, Sprite sprite, string avatarUrl = null)
{
myAvatarName = avatarUrl; foreach (Transform item in obj_rankNum.transform)
item.gameObject.SetActive(false);
2026-06-21 18:20:55 +08:00
switch (rankNum)
{
case 1:
obj_rankNum.transform.GetChild(0).gameObject.SetActive(true);
break;
case 2:
obj_rankNum.transform.GetChild(1).gameObject.SetActive(true);
break;
case 3:
obj_rankNum.transform.GetChild(2).gameObject.SetActive(true);
break;
default:
2026-06-21 22:38:18 +08:00
var obj = obj_rankNum.transform.GetChild(3).gameObject;
2026-06-21 18:20:55 +08:00
obj.SetActive(true);
2026-06-21 22:38:18 +08:00
obj.GetComponent<TextMeshProUGUI>().text = rankNum.ToString();
2026-06-21 18:20:55 +08:00
break;
}
userName.text = name;
userLevel.text = level;
userScore.text = score;
2026-06-21 22:38:18 +08:00
if (sprite != null) avatar.sprite = sprite;
2026-06-21 18:20:55 +08:00
}
}