分享

unity社交 API

 3dC 2014-05-23

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

  • 用户配置文件
  • 好友列表
  • 成就
  • 统计数据/排行榜

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

社交 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");
        });
    }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多