-
Notifications
You must be signed in to change notification settings - Fork 0
/
RankingRecord.cs
71 lines (64 loc) · 2.55 KB
/
RankingRecord.cs
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
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace UnityCustomRankingTemplate.Scripts
{
public class RankingRecord : MonoBehaviour
{
[Header("バッジ素材"), SerializeField] private List<Sprite> _badgeSprites = new List<Sprite>();
[Header("バッジカラー"), SerializeField] private List<Color> _badgeColors = new List<Color>();
[Header("ランキングバッジのサイズ"), SerializeField] private List<float> _badgeSize = new List<float>();
[Header("自分のランキングデータカラー"), SerializeField] private Color _myColor;
[SerializeField] private GameObject _rankBadge;
[SerializeField] private TextMeshProUGUI _dataText;
[SerializeField] private TextMeshProUGUI _rankText;
private string _userName;
private int _score;
/// <summary>
/// ランキングデータをUIにセット
/// </summary>
public void SetRecord(string userName, int score, int rank, bool isMyRecord)
{
_userName = userName;
_score = score;
_dataText.text = $"{userName} : {score}";
if (isMyRecord)
{
_dataText.color = _myColor;
}
SetRankingBadge(rank);
}
/// <summary>
/// バッジの設定
/// </summary>
private void SetRankingBadge(int rank)
{
// 末尾のインデックスで初期化
var rankIndex = _badgeSize.Count - 1;
// 特殊な順位のインデックス
if (rank <= rankIndex)
{
rankIndex = rank - 1;
}
// バッジサイズの設定
var size = _badgeSize[rankIndex];
_rankBadge.GetComponent<RectTransform>().sizeDelta = new Vector2(size, size);
// バッジ素材の設定
var badgeImage = _rankBadge.GetComponent<Image>();
badgeImage.sprite =_badgeSprites[rankIndex];
badgeImage.color = _badgeColors[rankIndex];
// 順位テキストの設定
_rankText.text = rank.ToString();
_rankText.gameObject.GetComponent<RectTransform>().sizeDelta = new Vector2(size, size);
}
/// <summary>
/// レコードの保持しているデータを返す
/// </summary>
/// <returns>{0}: _userName, {1}: _score</returns>
public (string, int) GetRecordData()
{
return (_userName, _score);
}
}
}