2017/05/17作成 (2022/02/16修正)
GitHub
https://github.com/NIFCLOUD-mbaas/UnityFirstApp
- 本サンプルは不具合がある場合、issue等から報告いただくようにお願いいたします
- 作成日:2016/06(更新日:2022/02)
- ニフクラ mobile backend の機能『データストア』を学習するための問題集です
- ニフクラ mobile backend の利用登録(無料)が必要です
- 問題用プロジェクトにはオンラインランキング機能が実装されていない状態の「シューティングゲーム」です
- 既に実装済みのニフクラ mobile backend を利用するための準備(SDK導入など)方法の詳細はこちらをご覧ください
https://mbaas.nifcloud.com/doc/current/introduction/quickstart_unity.html
- 問題は2問あります
- 2問クリアすると「シューティングゲーム」にオンラインランキング機能を実装したアプリが完成します
- 問題を取り組む上で必要な開発環境は以下です
- Unityが動作するWindows PC もしくはMac PC
- Unity 2020.3.20f1 (LTS)
- Unity SDK v4.4.1
- Xcode Version 14.0
- iPhone X (iOS 16)
▼問題用プロジェクト▼
https://github.com/NIFTYCloud-mbaas/UnityFirstApp/archive/Question.zip
- 上記リンクからzipファイル取得します
- ローカルに保存し、解凍します
- 【ゲーム(Game)ビュー】から初期画面(Tap To Start)をタッチします
- 矢印で方向を変えながら、弾丸やレーザーなどの飛び道具を利用して敵機を撃ち落とす、単純なゲームです
- GameOverになるとゲームプレイヤーの名前を入力するアラートが表示されますので、名前を入力し「Submit」をクリックします
- ゲームプレイヤーの名前とスコアが保存され、初期画面に戻ります
※ 注意:問題に取り組む前の状態では「LeaderBoard」(ランキングを見る)ボタンをタップしてもランキングは表示されません
- ニフクラ mobile backend にログインしアプリの新規作成を行います
- アプリ名はわかりやすいものにしましょう 例)「UnityShootGame」
- アプリが作成されるとAPIキーが2種類(アプリケーションキーとクライアントキー)発行されます
- 次で使用します
- 【ヒエラルキー(Hierarchy)ビュー】から
NCMBSettings
を編集します - 先程ニフクラ mobile backend のダッシュボード上で確認したAPIキーを入力します
- 【インスペクター(Inspector)ビュー】から「NCMB Settings」欄のApplication KeyとClient Keyの入力部分に各APIキーを入力します
/Assets/Scripts/saveScore.cs
を開きます。下図の saveScore
メソッドを編集し、引数の name
(アラートで入力した名前)と score
(シューティングゲームのスコア)の値をニフクラ mobile backend に保存する処理をコーディングしてください。
- データストアに保存先クラスを作成します
- クラス名は「
GameScore
」としてください name
を保存するフィールドを「name
」、score
を保存するフィールドを「score
」として保存してください
- ニフクラ mobile backend のUnityドキュメントをご参考ください
https://mbaas.nifcloud.com/doc/current/datastore/basic_usage_unity.html
問題1のコーディングが完了したら、下記の作業を行います
それぞれ該当する箇所に以下の処理を追記して、再生時にUnity Console上にログを表示できるようにします
- 保存に失敗した場合の処理を行う箇所に追記
- 保存に成功した場合の処理を行う箇所に追記
「再生」をクリックし、ゲームをします
- ゲームオーバーになったら名前を入力し、「OK」がクリックされると【問題1】で作成した
saveScore
メソッドが呼ばれ、データが保存されます - このとき下記のいずれかのログが出力されます
- 保存成功時:「
保存に成功しました。objectId:*********
」 - 保存失敗時:「
保存に失敗しました。エラーコード:******
」
※ エラーコードが出た場合はこちらで確認できます
https://mbaas.nifcloud.com/doc/current/rest/common/error.html#REST_APIのエラーコードについて
- 保存されたデータを確認しましょう
- 「データストア」をクリックすると、「
GameScore
」クラスにデータが登録されていることが確認できます。
- 模範解答は以下です
/Assets/Scripts/LeaderBoard.cs
を開きます。下図のfetchTopRankers
メソッドを編集し、データストアのGameScore
クラスに保存したname
とscore
のデータをscore
の降順(スコアの高い順)で検索・取得する処理をコーディングしてください。
- 検索データ件数は5件とします
- ニフクラ mobile backend のUnityドキュメントをご参考ください
https://mbaas.nifcloud.com/doc/current/datastore/ranking_unity.html
問題2のコーディングが完了したら、下記の作業を行います。
該当する箇所に以下の処理を追記して、再生時にUnity Console上にログを表示できるようにします
- 検索に失敗した場合の処理を行う箇所に追記
- 検索に成功した場合の処理を行う箇所に追記
Unityから「再生」し、「LeaderBoard」(ランキングを見る)ボタンをタップします
- 画面起動後、
fetchTopRankers
メソッドが呼ばれ、【問題1】で保存されたデータが検索・取得されます - このとき下記のいずれかのログが出力されます
- 検索成功時:「
検索に成功しました。
」 - 検索失敗時:「
検索に失敗しました。エラーコード:******
」
※ エラーコードが出た場合はこちらで確認できます
https://mbaas.nifcloud.com/doc/current/rest/common/error.html#REST_APIのエラーコードについて
検索に成功したら、該当する箇所に以下の処理を追記して、取得した値から必要なデータを取り出し、ランキング画面へ反映させます
- 検索に成功した場合の処理を行う箇所に追記
Unityから「再生」し、「LeaderBoard」(ランキングを見る)ボタンをタップします
- 先ほどのスコアが表示されれば完成です!おめでとうございます★
- ランキング画面を確認しましょう
- 「LeaderBoard」(ランキングを見る)ボタンをタップすると以下のようにランキングが表示されます。
- 上図はランキングが表示されることを確認しましょう!
- 模範解答は以下です
- 問題の回答を実装した完全なプロジェクトをご用意しています
▼完成版プロジェクト▼
https://github.com/NIFCLOUD-mbaas/UnityFirstApp/archive/AnswerProject.zip
- APIキーを設定してご利用ください
- ニフクラ mobile backend を使って、シューティングゲームに「ゴースト機能」を実装することができます!
- 興味がある方はこちらをご覧ください
https://github.com/NIFCLOUD-mbaas/UnityFirstApp/blob/master/Ghost.md