社交 API

社交 API (Social API) 是 Unity 访问社交功能的点,例如:

它为不同的社交后端(例如 XBox LiveGameCenter)提供 统一的界面,且将主要由程序员用于游戏工程上。

社交 API (Social API) 主要是一个异步的 API,典型的用法是通过函数调用,并在该函数完成时注册一个回调。异步函数可能会有副作用,例如在 API 中填入某些状态变量,并且回调可能会含有来自服务器的待处理数据。

社交 (Social) 类存在于 UnityEngine 命名空间中,因此总是可用的。但是其他的社交 API (Social API) 类则保存在其自己的命名空间 UnityEngine.SocialPlatforms 中。此外,社交 API (Social API) 在子命名空间(如 SocialPlatforms.GameCenter)中实现。

以下是社交 API (Social API) 的使用方法示例 (JavaScript):

import UnityEngine.SocialPlatforms;

function Start () {
    //认证并注册一个 ProcessAuthentication 回调
    //需在我们可以转到社交 API (Social API) 中的其他调用之前实现此调用
    Social.localUser.Authenticate (ProcessAuthentication);
}

//此函数在认证 (Authenticate) 完成时被调用
//请注意,如果操作成功,Social.localUser 将包含来自服务器的数据。 
function ProcessAuthentication (success:boolean) {
    if (success) {
        Debug.Log ("Authenticated, checking 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 回调
        //需在我们可以转到社交 API (Social API) 中的其他调用之前实现此调用
        Social.localUser.Authenticate (ProcessAuthentication);
    }

    //此函数在认证 (Authenticate) 完成时被调用
    //请注意,如果操作成功,Social.localUser 将包含来自服务器的数据。 
    void ProcessAuthentication (bool success) {
        if (success) {
            Debug.Log ("Authenticated, checking 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 API) 的更多信息,请查看社交 API 脚本参考

Page last updated: 2013-06-27