以前の記事【流流鍛メイキング】で省略したスコアランキングの部分になります。
みんなと遊べる要素はあるだけで楽しいので、開発中のゲームにはぜひ組み込んでみてください。
ゲーム内に組み込まれているタイプが好きなので、看板風にしました
左側が自分の近くのランキングで、右側が上位のランキングです
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と一致している場合は色を変えています。
おわりに
おつかれさまでした!
競い合えるゲームをつくって
みんなと一緒に盛り上げていきましょう~