ファイルサイズの削減
JSON 形式にシリアライズ

ソーシャル API

ソーシャル API は Unity のソーシャル機能をアクセスするための接点です

  • ユーザープロファイル
  • フレンドリスト
  • ゲーム実績( Achievements )
  • 統計/ランキング( Statistics / Leaderboards )

これにより XBox Live あるいは GameCenter への統一的なインターフェースが提供され、ゲームプロジェクトのプログラマに主に使用されます。

ソーシャル API は主に非同期 API であり、標準的な使い方は関数呼び出しを行い関数の完了後にコールバックを登録します。非同期の関数は副作用があり、API で特定の状態変数に値を生成したり、コールバックはサーバーで処理すべきデータを含む可能性があります。

ソーシャルクラスは UnityEngine 名前空間にあるため、常に利用可能ですが、ソーシャル API クラスは UnityEngine.SocialPlatforms という別の名前空間にあります。さらにソーシャル API の実装は SocialPlatforms.GameCenter など名前空間の下位の階層にあります。

次がソーシャル API の使用例です(JavaScript)

import UnityEngine.SocialPlatforms;

function Start () {
    // ProcessAuthentication コールバックを認証し登録します。
    // Social API の他の呼び出しを始める前に、この呼び出しが必要です。 
    Social.localUser.Authenticate (ProcessAuthentication);
}


// Authenticate が終了したときにこの関数が呼び出されます。
// 操作が成功したら、Social.localUser はサーバーからのデータを格納します
function ProcessAuthentication (success: boolean) {
    if (success) {
        Debug.Log ("Authenticated, checking achievements");

        //  loaded achievements を招集し、それを処理するためのコールバックを登録します
        Social.LoadAchievements (ProcessLoadedAchievements);
    }
    else
        Debug.Log ("Failed to authenticate");
}

//  LoadAchievement コールが終了すると、関数が呼び出されます。
function ProcessLoadedAchievements (achievements: IAchievement[]) {
    if (achievements.Length == 0)
        Debug.Log ("Error: no achievements found");
    else
        Debug.Log ("Got " + achievements.Length + " achievements");
    
    // このように関数を呼び出すこともできます
    Social.ReportProgress ("Achievement01", 100.0, function(result) {
        if (result)
            Debug.Log ("Successfully reported achievement progress");
        else
            Debug.Log ("Failed to report achievement");
    });
}


同じサンプルで C# を使用した例です。

using UnityEngine;
using UnityEngine.SocialPlatforms;

public class SocialExample : MonoBehaviour {
    
    void Start () {
        // ProcessAuthentication コールバックを認証し登録します。
        // Social API の他の呼び出しを始める前に、この呼び出しが必要です。
        Social.localUser.Authenticate (ProcessAuthentication);
    }

    // Authenticate が終了したときにこの関数が呼び出されます。
    // 操作が成功したら、Social.localUser はサーバーからのデータを格納します。
    void ProcessAuthentication (bool success) {
        if (success) {
            Debug.Log ("Authenticated, checking achievements");

            //  loaded achievements を招集し、それを処理するためのコールバックを登録します
            Social.LoadAchievements (ProcessLoadedAchievements);
        }
        else
            Debug.Log ("Failed to authenticate");
    }

    //  LoadAchievement コールが終了すると、関数が呼び出されます。
    void ProcessLoadedAchievements (IAchievement[] achievements) {
        if (achievements.Length == 0)
            Debug.Log ("Error: no achievements found");
        else
            Debug.Log ("Got " + achievements.Length + " achievements");
     
        // このように関数を呼び出すこともできます
        Social.ReportProgress ("Achievement01", 100.0, result => {
            if (result)
                Debug.Log ("Successfully reported achievement progress");
            else
                Debug.Log ("Failed to report achievement");
        });
    }
}


ソーシャル API の詳細については Social を参照してください。

ファイルサイズの削減
JSON 形式にシリアライズ