using Assets.MyGame.Scripts.Net; using Assets.MyGame.Scripts.Net.API.GameConfig_SubClass; using Assets.MyGame.Scripts.Net.API.UserData_SubClass; using System.Collections.Generic; using TMPro; using Unity.VisualScripting; 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; public Image avatarFrame; public BackPackPropItem backPackPropItemPrefab; public Transform backPackPropItemRarent; private string myAvatarName; private string myAvatarFrameName; private void OnEnable() { GameManager.Instance.OnAvatarChanged += OnAvatarChanged; GameManager.Instance.OnAvatarFrameChanged += OnAvatarFrameChanged; } private void OnDisable() { if (GameManager.Instance != null) { GameManager.Instance.OnAvatarChanged -= OnAvatarChanged; GameManager.Instance.OnAvatarFrameChanged -= OnAvatarFrameChanged; } } private void OnAvatarChanged(Sprite sprite) { if (!string.IsNullOrEmpty(myAvatarName) && sprite != null) { var cached = GameManager.Instance.GetAvatarSprite(myAvatarName); if (cached != null) avatar.sprite = cached; } } private void OnAvatarFrameChanged(Sprite sprite) { if (avatarFrame == null) return; if (!string.IsNullOrEmpty(myAvatarFrameName)) { var cached = GameManager.Instance.GetAvatarFrameSprite(myAvatarFrameName); if (cached != null) avatarFrame.sprite = cached; } } public void Init(int rankNum, string name, string level, string score, Sprite sprite, string avatarUrl, string avatarFrameUrl = null, List giftItems = null) { myAvatarName = avatarUrl; myAvatarFrameName = avatarFrameUrl; 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.GetComponentInChildren().text = rankNum.ToString(); break; } userName.text = name.Length > 4 ? name.Substring(0, 2) + "**" + name.Substring(name.Length - 2) : name; userLevel.text = level; userScore.text = score; if (sprite != null) avatar.sprite = sprite; // 头像框 if (avatarFrame != null) { if (!string.IsNullOrEmpty(avatarFrameUrl)) { var frameSprite = GameManager.Instance.GetAvatarFrameSprite(avatarFrameUrl); if (frameSprite != null) avatarFrame.sprite = frameSprite; avatarFrame.gameObject.SetActive(frameSprite != null); } else { avatarFrame.gameObject.SetActive(false); } } if (giftItems != null && giftItems.Count > 0) { foreach (var gift in giftItems) { if (gift?.product == null) continue; GameObject obj = Instantiate(backPackPropItemPrefab.gameObject, backPackPropItemRarent); var tempItem = obj.GetComponent(); int count = gift.isRandom ? gift.minCount : gift.count; tempItem.Init(APIManager.baseURL + gift.product.imageUrl, count, (PropEnum)gift.product.type); } } } }