Version: 5.3 (switch to 5.4b)
Уменьшение размера файла сборки
JSON Serialization

Social API

Social API (API социальных взаимодействий) в Юнити является точкой входа таких социальных функций, как:

  • Профили пользователя (User profiles)
  • Списки друзей (Friends lists)
  • Достижения (Achievements)
  • Статистика / рейтинги (Statistics / LeaderBoards)

Он обеспечивает унифицированный интерфейс для различных социальных бэкендов, таких как 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

Уменьшение размера файла сборки
JSON Serialization