64 lines
1.9 KiB
C#
64 lines
1.9 KiB
C#
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;
|
|
|
|
private string myAvatarName;
|
|
|
|
private void OnEnable()
|
|
{
|
|
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)
|
|
{
|
|
var cached = GameManager.Instance.GetAvatarSprite(myAvatarName);
|
|
if (cached != null) avatar.sprite = cached;
|
|
}
|
|
}
|
|
|
|
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);
|
|
|
|
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:
|
|
var obj = obj_rankNum.transform.GetChild(3).gameObject;
|
|
obj.SetActive(true);
|
|
obj.GetComponent<TextMeshProUGUI>().text = rankNum.ToString();
|
|
break;
|
|
}
|
|
userName.text = name;
|
|
userLevel.text = level;
|
|
userScore.text = score;
|
|
if (sprite != null) avatar.sprite = sprite;
|
|
}
|
|
}
|