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