Game CenterはiOSの機能でゲームのスコアを共有し、他のユーザとランキングを競うLeaderboard、
アプリ使用時の目標を達成していくAchievement(達成項目)が利用できる。
UnityでGame centerを使う
- DeveloperサイトでアプリIDを作成
-
iTunes Connectでアプリの設定をする。
説明・アイコンは仮で入れておく。 -
iTunes Conncetのアプリ詳細画面から
Manage Game Centerを選択 - 単一ゲーム > シングルゲーム向けに有効化 を選択
- Leaderboard、Achievement(達成項目)を追加していく。
Leaderboard
-
Leaderboardから追加
「Leaderboardの追加」を押す。
-
単体Leaderboardの「選択する」を押す
Leaderboardの参照名:iTunes Connect内でLeaderboardを検索する場合に使用する名前。
Leaderboard ID:識別子。変更不可。また、プログラム上で使用するので覚えておく。
※「com.gclue.アプリ名.リーダボード名」など、統一させた方が良いかもしれない。
スコアのフォーマットタイプ:このアプリケーションのスコアをLeaderboardで表示する形式 (整数、経過時間、金額など) を選択する。
並べ替えの順番:Leaderboardのスコア表示の昇順降順。
スコアの範囲 (任意):スコア表示のレンジ。Leaderboardのローカリゼーション
Leaderboardの言語対応
「Add Language」でローカリゼーションする言語を追加
最低一言語入力しなければならない。
言語:表示言語を選択。
名前: GameCenterで表示される名前
スコアのフォーマット:表示スコアの書式
スコアのフォーマットサフィックス:表示スコアの末尾(複数形の場合)
Image:リーダーボードの画像
Achievement(達成項目)
-
達成項目も参照名:内部名。iTunes Connect内でアチーブメントを検索する場合に使用する名前
達成項目 ID:識別子。変更不可。この達成項目に対して作成するアルファベットの固有IDです。ピリオド(.)や下線(_)を含めることができる。点数:達成項目で得られる得点です。達成項目ごとに最高100点、すべての達成項目を合わせて最高1000点まで獲得できる。
非表示:非表示としてマークされている達成項目は、プレイヤーが達成するまでGame Centerで非表示になる。
複数回達成可能:「はい」を選択すると、ユーザーはすでに達成した達成項目に対するGame Centerのチャレンジを受け入れることができる。達成項目のローカリゼーション
- 言語:選択言語
- タイトル:表示させるタイトル
- 達成前に表示する説明:達成前にアチーブメントのリストで表示させる説明文言
- 達成後に表示する説明;達成後にアチーブメントのリストで表示させる説明文言
- 画像:512×512ピクセル、72DPI以上、RGBカラースペースの、.jpeg、.jpg、.tif、.tiff、または.pngファイル
Achievementが100%になったとき表示される画像
テストユーザーの作成
ゲームセンターのテストユーザーをつくる。
- itunes Connectトップページから「Manage Users」を選択
-
You have not added any users. Click Add New User to get started.が表示されたら
左上の「Add New User」を選択 -
ユーザーのデータを入れる
パスワードの答えは6文字以上35文字以下、
パスワードには大文字、数値を1文字以上入れる -
ユーザー作成後、登録したメールアドレスにメールが届く。
メール内のリンクからユーザー認証。
実装
スクリプトを保存してゲームオブジェクトへコンポーネントとしてつける。
Game centerを呼び出すボタンからSocial.ShowLeaderboardUI()を呼び出す。
Social.ShowLeaderboardUI()でLeaderboardとアチーブメントの両方を表示できる。
□コード参照
UnityでiOSのGameCenterを利用するためのサンプルコード – Qiita
[code]
// リーダーボードを表示する
public static void ShowLeaderboardUI()
{
Social.ShowLeaderboardUI();
}
// リーダーボードにスコアを送信する
public static void ReportScore (int score)
{
//このIDは任意の登録したものを使う
string leaderboardID = "leaderboardid";
Debug.Log ("スコア " + score + " を次の Leaderboard に報告します。" + leaderboardID);
Social.ReportScore (score, leaderboardID, success => {
Debug.Log(success ? "スコア報告は成功しました" : "スコア報告は失敗しました");
});
}
// Achivementにスコアを送信する
//呼び出し例:RankingUtility.ReportachievementScore("normal");
//
public static void ReportachievementScore (string achievementID)
{
//このIDは任意の登録したものを使う
//string achievementID = "normal";
Debug.Log ("アチーブメント" + achievementID + " を送信します。");
Social.ReportProgress(achievementID,100.0,success => {
Debug.Log(success ? "アチーブメント報告は成功しました" : "アチーブメント報告は失敗しました");
});
}
[/code]
- テストはiPhone実機を使う
-
ビルドしてXcodeへ
・GameKit.frameworkをフレームワークに追加されていることを確認後、
実機テスト。 - ゲームセンターのアプリを開き、
テストユーザーのメールアドレスでログインする。 - 再度テストアプリを開き、起動時にゲームセンターのウィンドウが開くか確認。
-
動作チェックをしてリクエストを送る処理をいれた場所で
送信されGamecenterに記録されるかを確認。□チェック項目
・作成したバンドルIDをUnityプロジェクトに反映し忘れないようにすること!!←これでハマった。
・iTunes ConnectでGame CenterをEnableにしているか
・サンドボックス用のアカウントを使用しているか
ゲームセンターのデータを削除する方法
Achievement達成時に通知センターの動作がうまくいかないのは
なんでだろう。
コメント