以前の記事【流流鍛メイキング】で省略したスコアランキングの部分になります。
みんなと遊べる要素はあるだけで楽しいので、開発中のゲームにはぜひ組み込んでみてください。
ゲーム内に組み込まれているタイプが好きなので、看板風にしました
左側が自分の近くのランキングで、右側が上位のランキングです
Unity公式のLeaderboardsという機能をつかっています
はじめに
Unityのサイトにログインして、LeaderBoards機能を有効にします
製品 > LeaderBoards > Launch から、IDやリセット条件を決めておきます。
機能のインストール
UnityのPackageManagerから、Leaderboardsの機能をインストールします。検索窓に”Leader”と入れると出ます。
接続
公式のコードです
public class LeaderboardsSample : MonoBehaviour
{
private async void Awake()
{
await UnityServices.InitializeAsync();
await AuthenticationService.Instance.SignInAnonymouslyAsync();
}
}
初期化と接続をします。通信なので処理がすぐに完了しないため、非同期のしるしとして async / await を設定します。
書き込み
公式のコードです(日本語だと404エラーになっとる…)
public async void AddScore(string leaderboardId, int score)
{
var playerEntry = await LeaderboardsService.Instance
.AddPlayerScoreAsync(leaderboardId, score);
Debug.Log(JsonConvert.SerializeObject(playerEntry));
}
実行後、UnityCrowdのLeaderboardを見て、データが追加されていることを確認してみてください。
読み取り
同じく公式のコードです。リンク先には、近しい順位を取得するコードも載っています。
public async void GetScores(string leaderboardId)
{
var scoresResponse = await LeaderboardsService.Instance
.GetScoresAsync(leaderboardId);
Debug.Log(JsonConvert.SerializeObject(scoresResponse));
}
表示
前項レスポンスは文字と数字の組み合わせなので、結果をUI系のコンポーネントに貼り付けるとそのまま表示できます。
自分のランクが分かるように、自分のIDと一致している場合は色を変えています。
おわりに
おつかれさまでした!
競い合えるゲームをつくって
みんなと一緒に盛り上げていきましょう~







