RankingItem.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Networking;
  5. using UnityEngine.UI;
  6. using static UnityEngine.Networking.UnityWebRequest;
  7. namespace ShotSimulator.UI
  8. {
  9. public class RankingItem : MonoBehaviour
  10. {
  11. public Sprite[] rankSprits;
  12. public Image rankImage;
  13. public Text rankText;
  14. public Image avatarImage;
  15. public Text userNameText;
  16. public Text scoreText;
  17. public void SetRankData(RankingData data)
  18. {
  19. if (data.rank >= 1 && data.rank <= 3)
  20. {
  21. rankImage.gameObject.SetActive(true);
  22. rankText.gameObject.SetActive(false);
  23. rankImage.sprite = rankSprits[data.rank - 1];
  24. rankImage.SetNativeSize();
  25. }
  26. else
  27. {
  28. rankImage.gameObject.SetActive(false);
  29. rankText.gameObject.SetActive(true);
  30. rankText.text = data.rank.ToString();
  31. }
  32. if (data.avatarId == int.MinValue)
  33. {
  34. if (avatarImage) avatarImage.sprite = null;
  35. }
  36. else if (data.avatarId < 0) {
  37. if (data.avatarUrl != string.Empty)
  38. {
  39. MonoManager.GetInstance().StartCoroutine(LoadTexture2D(data.avatarUrl));
  40. }
  41. }
  42. else
  43. {
  44. string path = "Textures/Avatar/";
  45. if (data.avatarId < 7) path += "Player" + data.avatarId;
  46. else path += data.avatarId - 7;
  47. if (avatarImage) avatarImage.sprite = Resources.Load<Sprite>(path);
  48. }
  49. userNameText.text = data.userName;
  50. scoreText.text = data.score.ToString();
  51. }
  52. public IEnumerator LoadTexture2D(string path)
  53. {
  54. UnityWebRequest request = UnityWebRequestTexture.GetTexture(path);
  55. yield return request.SendWebRequest();
  56. if(request.result == Result.Success)
  57. {
  58. var texture = DownloadHandlerTexture.GetContent(request);
  59. Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
  60. avatarImage.sprite = sprite;
  61. }
  62. else
  63. {
  64. Debug.LogWarning(request.result);
  65. }
  66. }
  67. public void Reset()
  68. {
  69. rankImage.gameObject.SetActive(false);
  70. rankText.gameObject.SetActive(false);
  71. avatarImage.sprite = null;
  72. userNameText.text = string.Empty;
  73. scoreText.text = string.Empty;
  74. }
  75. }
  76. }