【Unity】GameCenterのLeaderBoardを利用する方法

AppStoreのLeaderBoardを使うと、ゲームのスコアを他のプレイヤーと競えます。

私もUnityで作った物理パズルゲームに、LeaderBoardと連携する機能を追加してみました。

手順としては、

  1. iTunes ConnectでLeaderBoardの設定をする
  2. UnityでLeader Boardと連携するコードを追加する
  3. iPhoneでGameCenterを有効にした状態でアプリを実行して動作確認

と言う順番でやりました。

1つずつ見ていきましょう。

iTunes Connectでの作業

LeaderBoardの作成

iTunes Connectにログインしてアプリを選択すると上部に「AppStore」「機能」「TestFlight」の3つのタブがあります。

機能タブ→GameCenterを選択します。

ここにLeaderBoardを追加していきます。

「標準」を選択。

日本語にローカライズします。

日本語にして、名前は「ハイスコア」、フォーマットはint、フォーマットサフィックスは「点」にしました。

追加された画面です。

アプリにLeaderboardを追加する

次に、「AppStore」「機能」「TestFlight」の3つのタブからAppStoreを選択し、「Leaderboardを追加」します。

登録が完了しました。

Unityでコードを書く

処理としては3つです。

  1. ユーザ認証
  2. スコア送信
  3. Leader Boardの表示

1のユーザ認証に成功していないと、2、3は動きません。

私はタイトル画面シーンで1のユーザ認証だけを行ってから、ゲーム画面シーンで2、3ができるようにしました。

同じシーンで1〜3をやる必要はないので、シーンごとに処理を分けても大丈夫です。

実機確認

iPhoneの設定でGameCenterを有効にします。

ちなみに、GameCenterが有効出ない状態でアプリを動かすと、Xcodeで以下のメッセージが出てきます。

「ローカルプレイヤーが認証されていないため要求された操作は完了できませんでした。」

私はこれのせいで結構ハマってました。

次にアプリを起動し、ユーザ認証の処理が正常に動くと、以下の画面が表示されます。

LeaderBoardを表示すると以下の画面に切り替わりました。

スコアの送信時に画面はありませんが、ゲームの終了時にSendScoreを呼び出せばスコアが送信されます。

注意点

動かない時は以下を確認しましょう。

  • アプリとiTunesConnectのバンドルIDが合っているか
  • アプリとiTunesConnectのバージョンが合っているか
  • GameCenterは有効になっているか。
  • Unityエディタでは動かない。実機で動かす。

参考URL

https://smartgames.hatenablog.com/entry/2016/06/01/233048