Social API — это точка доступа Unity к социальным функциям, таким как:
- Профили пользователей
- Списки друзей
- Достижения
- Статистика / Таблицы лидеров
Он предоставляет унифицированный интерфейс для различных социальных серверов, таких как GameCenter, и предназначен для использования в первую очередь программистами в игровом проекте.
Social API — это в основном асинхронный API, и типичный способ его использования — это вызов функции и регистрация для обратного вызова, когда эта функция завершится. Асинхронная функция может иметь побочные эффекты, такие как заполнение определенных переменных состояния в API, а обратный вызов может содержать данные с сервера для обработки.
Класс Social находится в пространстве имен UnityEngine и поэтому всегда доступен, но другие классы API социальных сетей хранятся в собственном пространстве имен UnityEngine.SocialPlatforms. Кроме того, реализации Social API находятся в подпространстве имен, например SocialPlatforms.GameCenter.
Вот пример (JavaScript) того, как можно использовать Social API:
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");
});
}
}
Для получения дополнительной информации о Social API см. Справочник по сценариям Social API