>チュートリアル(Unity):ハイスコアランキング機能を作るこのサイトを正しく表示するためには、ブラウザーのJavaScriptの設定を「有効」にしてください。概要このページでは、データストアに保存されたハイスコアを使って、ハイスコアランキングを実装する方法を学びます。ランキングは、全体の上位5件を表示したものと、自分の周囲だけを表示したものの2つを実装しましょう。下の画像が完成のイメージ図です。ログイン機能とハイスコアのサーバー管理機能を実装していない場合は、「ログイン機能を作る」「ハイスコアをサーバーに保存する」を先に済ませておいてください。シーンファイルのダウンロードログイン画面実装時と同様に、今回もランキング表示画面とメインゲーム画面をそれぞれ別のシーンに分けて実装していきます。下記リンクから、ランキング画面を実装するシーンファイルをダウンロードします。ダウンロードした「LeaderBoard.unity」を、プロジェクトの「Scenes」フォルダにドラッグしてコピーしてください。Build」に追加(ドラッグ&ドロップ)してください。このシーンには、既に以下のものが実装されています。各種見出しGUITextオブジェクト順位とプレイヤー名、スコアを表示するGUITextオブジェクトこのページでは、以下の内容を実装していきます。backendと通信してハイスコアを取得し、ランキングとして表示する機能メインゲーム画面とランキング画面を切り替えるManager.csを開き、OnGUIメソッド内を以下のように編集してください。Board」ボタンを押すとランキングシーンが表示されるようになります(ただし中身は空の状態)。backendからハイスコアを取得して、ランキングデータを作る機能を実装しましょう。HighScoreクラスと同様、今回のクラスもMVCデザインでいうモデルクラスにあたるので、Unityに依存しない形でコードを書き、ゲームオブジェクトにアタッチしないで使います。Scriptsフォルダの中に「LeaderBoard.cs」という名前のC#スクリプトを新規作成し、下記の内容を記述してください。fetchRankメソッドでは、現在の自分のハイスコア「より大きい」スコアを持つレコードをWhereGreaterThanメソッドで検索し、CountAsyncメソッドでその数を取得しています。自分より大きいスコアが3人いたら、自分は4位だということがわかります。次にfetchTopRankersメソッドでは、OrderByDescendingメソッドでスコアを降順にしつつ、Limitプロパティを5に設定することで、スコアの高い上位5人だけを取得しています。取得した5件のレコードをHighScoreクラスのListとして保存します。fetchNeighborsメソッドでは、先述した降順並び替えとLimitの設定に加えて、現在の自分の順位によってSkipプロパティを設定することで、自分の周囲5件だけを取得しています。このように、SkipやLimit、ソートの指定によって、様々なデータの取得が可能です。詳しくはSDKリファレンスをご覧下さい。HighScoreクラスを拡張する今回はランキングを、「HighScoreクラスを5つ含んだList」という形で実装しました。そこで、HighScoreクラスに「自分のプレイヤー名とハイスコア」を文字列として出力させるメソッドを追加しましょう。HighScore.csを開き、以下のメソッドを追加してください。最後に、ランキング画面に遷移したらランキングの取得を開始し、読み込みが完了したら画面に表示する機能を実装しましょう。LeaderBoardシーンに「LeaderBoardManager」という名前で空のオブジェクトを作成し、同名のスクリプトを新規作成・アタッチしてください。その後、スクリプトを以下の内容に編集してください。}}Startメソッドでハイスコアの取得を開始し、ハイスコアの取得が終わったら自分の順位の取得を開始し、それが終わったらランキングの取得を開始しはじめます。それぞれの取得はAsync系のメソッド、つまり非同期に行われるので、処理の終了をフラグで判断し、同期処理化しています。ランキングの取得まで終わったら、GUITextに順位とプレイヤー名、スコアを表示しています。OnGUIとdrawMenuメソッドでは、いつものようにボタンの描画と画面遷移を行っています。動作確認おつかれさまでした!以上でハイスコアランキング機能の実装が完了しました。LogInシーンを開いてゲームを実行し、ランキングが表示されることを確かめましょう。事前に5人以上プレイヤーを作ってスコアを登録しておくとよいでしょう。Expertプラン以上のお客様はテクニカルサポートにてご質問を承らせて頂きます。TOPSNSFacebookTwitterQiitaGitHub富士通クラウドテクノロジーズホームへ特定商取引法に基づく表示ウェブサイトの利用について個人情報保護ポリシーについて。