70
71

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-05-23

概要

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

70
71
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
70
71

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?