Social API (API социальных взаимодействий) в Юнити является точкой входа таких социальных функций, как:
Он обеспечивает унифицированный интерфейс для различных социальных бэкендов, таких как XBox Live или GameCenter, и предназначен для использования непосредственно программистами игрового проекта.
Social API преимущественно асинхронный API, и типичный способ его использования заключается в создании вызова функции и регистрации для ответного вызова, когда эта функция выполнится. Асинхронные функции могут иметь побочные эффекты, такие как заполнение определенных переменных состояний в API, и ответ может содержать данные с сервера, подлежащие обработке.
Класс Social принадлежит пространству имён UnityEngine, поэтому он всегда доступен, однако другие классы SocialAPI хранятся в своём собственном пространстве имён, UnityEngine.SocialPlatforms. Кроме того, реализация Social API проходит в подпространстве имён, таком как SocialPlatforms.GameCenter.
Ниже пример (JavaScript), показывающий как можно использовать SocialAPI:
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 Scripting Reference