#今回やること
前回やったUnityで簡単なセーブとロードの方法でやったPlayerPrefsを用いて簡易的なランキングを実装しようと思います。
#仕様
- 一度ゲームを閉じてもデータが保持される
- 高い点数を取得したらランキングを更新する
これらを実装して組んでいこうと思います。
#コード
Ranking.cs
using UnityEngine;
using UnityEngine.UI;
public class Ranking : MonoBehaviour {
[SerializeField,Header("数値")]
int point;
string[] ranking = { "ランキング1位", "ランキング2位", "ランキング3位", "ランキング4位", "ランキング5位" };
int[] rankingValue = new int[5];
[SerializeField, Header("表示させるテキスト")]
Text[] rankingText=new Text[5];
// Use this for initialization
void Start ()
{
GetRanking();
SetRanking(point);
for (int i = 0; i < rankingText.Length; i++)
{
rankingText[i].text = rankingValue[i].ToString();
}
}
/// <summary>
/// ランキング呼び出し
/// </summary>
void GetRanking()
{
//ランキング呼び出し
for (int i = 0; i < ranking.Length; i++)
{
rankingValue[i]=PlayerPrefs.GetInt(ranking[i]);
}
}
/// <summary>
/// ランキング書き込み
/// </summary>
void SetRanking(int _value)
{
//書き込み用
for (int i = 0; i < ranking.Length; i++)
{
//取得した値とRankingの値を比較して入れ替え
if (_value>rankingValue[i])
{
var change = rankingValue[i];
rankingValue[i] = _value;
_value = change;
}
}
//入れ替えた値を保存
for (int i = 0; i < ranking.Length; i++)
{
PlayerPrefs.SetInt(ranking[i],rankingValue[i]);
}
}
}
これで数値の高い順に並び変えられると思います。