UnityでiOSのGameCenterを利用するためのサンプルコード

  • 66
    いいね
  • 3
    コメント
この記事は最終更新日から1年以上が経過しています。

概要

UnityでiOSのGameCenterを利用し、リーダーボードの表示とユーザーのスコアを送信する手順を説明します。

リーダーボード.PNG

プラグインなどは使わず、UnityEngine.SocialPlatformsを使っています。

手順

  • iTunes Connectでアプリ登録
  • iTunes Connectでリーダーボード登録
  • Unityで実装

iTunes Connectでアプリ登録

iOS Developer CenterでAppIDを登録後、iTunes Connectでアプリ登録しリーダーボードを有効にする必要があります。

参考
https://sites.google.com/a/gclue.jp/ios-docs/leader-boardtoachievementno-zuo-cheng

リーダーボードを登録し、登録した任意のリーダーボードIDを利用することになります。

Unityで実装

リーダーボードの表示とスコア登録のために、ひとつのユーティリティクラスにまとめました。

using UnityEngine;
using System.Collections;
using UnityEngine.SocialPlatforms;

public class RankingUtility {

    //ユーザー認証
    public static void Auth()
    {
        // 認証のため ProcessAuthenticationをコールバックとして登録
        // This call needs to be made before we can proceed to other calls in the Social API
        Social.localUser.Authenticate (ProcessAuthentication);        
    }

    // 認証が完了した時に呼び出される
    // 認証が成功した場合、サーバーからのデータがSocial.localUserにセットされている
    private static void ProcessAuthentication (bool success)
    {
        if (success) {
            Debug.Log ("Authenticated, checking achievements");


        } else {
            Debug.Log ("Failed to authenticate");
        }
    }

    // リーダーボードを表示する
    public static void ShowLeaderboardUI()
    {
        Social.ShowLeaderboardUI();
    }

    // リーダーボードにスコアを送信する
    public static void ReportScore (long score)
    {
        //このIDは任意の登録したものを使う
        string leaderboardID = "score";

        Debug.Log ("スコア " + score + " を次の Leaderboard に報告します。" + leaderboardID);

        Social.ReportScore (score, leaderboardID, success => {

            Debug.Log(success ? "スコア報告は成功しました" : "スコア報告は失敗しました");
        });
    }
}

利用方法

RankingUtility.Auth();

認証のためにまず最初に実行する。

RankingUtility.ReportScore(long score);

スコアをリーダーボードに送信する。

RankingUtility.ShowLeaderboardUI();

リーダーボードを表示する(モーダルで表示される)。
スコア送信時にリーダーボードを指定しているのに、表示には指定しないのが不思議に思うのは正解で、リーダーボードが複数あればそれを選ぶUIになるようです。

注意事項

  • XcodeでGameCenterを有効化にしておく
  • iTunesのテストユーザーを使う
    • サンドボックスなら自動的に現在のユーザーはログオフされる
    • テストユーザーをiTunes Connectから作成しておくこと

参考

Unity公式リファレンスマニュアル ソーシャルAPI
http://docs-jp.unity3d.com/Documentation/Components/net-SocialAPI.html