携帯機器でのネットワーク機能
アセットバンドル(Unity Proのみ)

ソーシャルAPI

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

ソーシャル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 () {
    // Authenticate and register a ProcessAuthentication callback
    // This call needs to be made before we can proceed to other calls in the Social API
    Social.localUser.Authenticate (ProcessAuthentication);
}

// This function gets called when Authenticate completes
// Note that if the operation is successful, Social.localUser will contain data from the server. 
function ProcessAuthentication (success: boolean) {
    if (success) {
        Debug.Log ("Authenticated, checking achievements");

        // Request loaded achievements, and register a callback for processing them
        Social.LoadAchievements (ProcessLoadedAchievements);
    }
    else
        Debug.Log ("Failed to authenticate");
}

// This function gets called when the LoadAchievement call completes
function ProcessLoadedAchievements (achievements: IAchievement[]) {
    if (achievements.Length == 0)
        Debug.Log ("Error: no achievements found");
    else
        Debug.Log ("Got " + achievements.Length + " achievements");
    
    // You can also call into the functions like this
    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 () {
        // Authenticate and register a ProcessAuthentication callback
        // This call needs to be made before we can proceed to other calls in the Social API
        Social.localUser.Authenticate (ProcessAuthentication);
    }

    // This function gets called when Authenticate completes
    // Note that if the operation is successful, Social.localUser will contain data from the server. 
    void ProcessAuthentication (bool success) {
        if (success) {
            Debug.Log ("Authenticated, checking achievements");

            // Request loaded achievements, and register a callback for processing them
            Social.LoadAchievements (ProcessLoadedAchievements);
        }
        else
            Debug.Log ("Failed to authenticate");
    }

    // This function gets called when the LoadAchievement call completes
    void ProcessLoadedAchievements (IAchievement[] achievements) {
        if (achievements.Length == 0)
            Debug.Log ("Error: no achievements found");
        else
            Debug.Log ("Got " + achievements.Length + " achievements");
     
        // You can also call into the functions like this
        Social.ReportProgress ("Achievement01", 100.0, result => {
            if (result)
                Debug.Log ("Successfully reported achievement progress");
            else
                Debug.Log ("Failed to report achievement");
        });
    }
}


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

携帯機器でのネットワーク機能
アセットバンドル(Unity Proのみ)