接入流程
Apple Developer开发流程
应用申请和后台排行榜创建
进行成就和排行榜的添加和删除等操作都在官网有详细解释官方文档
Social API
以下是根据Unity Document : Apple Social API官方文档,列出了Unity Social API的静态变量和函数,以及它们的简要说明:
成员 | 类型 | 描述 | 实例 |
---|---|---|---|
Active | 静态变量 | 这是当前活动的社交平台。 | - |
localUser | 静态变量 | 本地用户(可能未登录)。 | Social.localUser |
CreateAchievement | 静态函数 | 创建一个 IAchievement 实例。 | Social.CreateAchievement() |
CreateLeaderboard | 静态函数 | 创建一个 ILeaderboard 实例。 | Social.CreateLeaderboard() |
LoadAchievementDescriptions | 静态函数 | 加载与此应用程序相关联的成就描述。 | Social.LoadAchievementDescriptions() |
LoadAchievements | 静态函数 | 加载已登录用户已实现或已报告了进度的成就。 | Social.LoadAchievements() |
LoadScores | 静态函数 | 从给定的排行榜加载一组默认分数。 | Social.LoadScores(leaderboardID) |
LoadUsers | 静态函数 | 加载与给定用户ID数组相关联的用户配置文件。 | Social.LoadUsers(userIDs) |
ReportProgress | 静态函数 | 报告成就的进度。 | Social.ReportProgress(achievementID, percent) |
ReportScore | 静态函数 | 向特定排行榜报告分数。 | Social.ReportScore(score, leaderboardID) |
ShowAchievementsUI | 静态函数 | 显示游戏成就的默认/系统视图。 | Social.ShowAchievementsUI() |
ShowLeaderboardUI | 静态函数 | 显示游戏排行榜的默认/系统视图。 | Social.ShowLeaderboardUI() |
请注意,"实例"列中的代码示例是假设性的,展示了如何调用这些静态函数。在实际使用中,您可能需要根据具体的API文档和您的游戏逻辑来调整这些调用。此外,一些静态变量和函数可能不需要创建实例,因此在这些情况下,“实例”列可能不适用。
这个表格提供了Unity Social API中一些关键组件的概览,展示了它们的类型和基本功能。
在实际的游戏开发中,这些API可以用来实现玩家认证、成就系统、排行榜等功能,并与玩家的社交网络进行交互。
基础功能
ILocalUser
接口类型
将 IUserProfile
接口的成员与 ILocalUser
接口的成员结合,以下是更新后的表格:
成员类型 | 成员名称 | 类型 | 描述 |
---|---|---|---|
属性 | userName | string | 用户的用户名或别名。 |
属性 | id | string | 用户的全局唯一标识符。 |
属性 | isFriend | bool | 用户是否是当前登录用户的好友。 |
属性 | state | UserState | 用户的在线状态。 |
属性 | image | Texture2D | 用户的头像图像。 |
方法 | Authenticate | void | 认证本地用户的方法。 |
方法 | LoadFriends | void | 加载本地用户的朋友列表的方法。 |
属性 | friends | IUserProfile[] | 获取本地用户的朋友列表。 |
属性 | authenticated | bool | 标识本地用户是否已经通过认证。 |
属性 | underage | bool | 标识本地用户是否未成年。 |
这个表格列出了 ILocalUser
接口从 IUserProfile
接口继承的属性以及它自己的特有成员。IUserProfile
接口定义了用户的基本资料信息,而 ILocalUser
接口则添加了本地用户特有的认证和社交功能。UserState
是一个枚举类型,表示用户的在线状态。这些接口提供了Unity游戏服务中用户认证和社交网络集成的基础。
Social.localUser
函数
这段代码用于处理玩家的认证,并在认证成功后打印出玩家的用户名、用户ID和是否未成年的状态信息。
using UnityEngine;
public class ExampleScript : MonoBehaviour
{
void Start()
{
Social.localUser.Authenticate(success => {
if (success)
{
Debug.Log("Authentication successful");
string userInfo = "Username: " + Social.localUser.userName +
"\nUser ID: " + Social.localUser.id +
"\nIsUnderage: " + Social.localUser.underage;
Debug.Log(userInfo);
}
else
Debug.Log("Authentication failed");
});
}
}
成就系统
成员 | 类型 | 描述 | 实例 |
---|---|---|---|
CreateAchievement | 静态函数 | 创建一个 IAchievement 实例。 | Social.CreateAchievement() |
LoadAchievementDescriptions | 静态函数 | 加载与此应用程序相关联的成就描述。 | Social.LoadAchievementDescriptions() |
LoadAchievements | 静态函数 | 加载已登录用户已实现或已报告了进度的成就。 | Social.LoadAchievements() |
ReportProgress | 静态函数 | 报告成就的进度。 | Social.ReportProgress(achievementID, percent) |
ShowAchievementsUI | 静态函数 | 显示游戏成就的默认/系统视图。 | Social.ShowAchievementsUI() |
IAchievement
接口类型
以下是根据IAchievement
的代码,列出的成员、类型和描述的表格:
成员名称 | 类型 | 描述 |
---|---|---|
ReportProgress | 方法(Action) | 用于报告成就进度,回调函数接收一个布尔值表示操作成功或失败。 |
id | string | 成就的唯一标识符。 |
percentCompleted | double | 完成进度,范围从0.0到100.0。 |
completed | bool | 当percentCompleted达到100.0时为true。 |
hidden | bool | 如果为true,则此成就对用户不可见。 |
lastReportedDate | DateTime | 当percentCompleted更新时,由服务器设置的最后报告日期。 |
Social.CreateAchievement
函数
这段代码演示了如何在Unity中使用Social API创建一个成就(IAchievement),设置其ID和完成度为100%,然后异步报告成就进度:
using UnityEngine;
using UnityEngine.SocialPlatforms;
public class ExampleClass : MonoBehaviour
{
void Example()
{
IAchievement achievement = Social.CreateAchievement();
achievement.id = "Achievement01";
achievement.percentCompleted = 100.0;
achievement.ReportProgress(result => {
if (result)
Debug.Log("Successfully reported progress");
else
Debug.Log("Failed to report progress");
});
}
}
IAchievementDescription
类型
以下是根据您提供的代码反编译结果制作的表格,列出了 IAchievementDescription
接口的成员、类型和描述:
成员名称 | 类型 | 描述 |
---|---|---|
id | string (get, set) | 唯一标识符,用于识别这个成就描述。 |
title | string (get) | 人类可读的成就标题。 |
image | Texture2D (get) | 成就的图像表示。 |
achievedDescription | string (get) | 成就完成后的描述。 |
unachievedDescription | string (get) | 成就未完成时的描述。 |
hidden | bool (get) | 如果为隐藏成就,则在完成度为0时不会在列表中显示,直到完成度有所变动。 |
points | int (get) | 这个成就的点值。 |
IAchievementDescription
接口定义了游戏成就的元数据,包括成就的唯一标识符、标题、图像、达成和未达成状态的描述、是否为隐藏成就以及成就点值。这些信息通常用于在游戏中显示成就列表,让玩家了解每个成就的具体内容和解锁状态。
Social.LoadAchievementDescriptions
函数
这段代码使用Unity的Social API在游戏开始时异步加载所有的成就描述,并在打印ID、标题和未达成描述,如果加载成功则显示详细信息,否则输出失败信息。
using UnityEngine;
using UnityEngine.SocialPlatforms;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
void Start()
{
Social.LoadAchievementDescriptions(descriptions => {
if (descriptions.Length > 0)
{
Debug.Log("Got " + descriptions.Length + " achievement descriptions");
string achievementDescriptions = "Achievement Descriptions:\n";
foreach (IAchievementDescription ad in descriptions)
{
achievementDescriptions += "\t" +
ad.id + " " +
ad.title + " " +
ad.unachievedDescription + "\n";
}
Debug.Log(achievementDescriptions);
}
else
Debug.Log("Failed to load achievement descriptions");
});
}
}
Social.LoadAchievements
函数
这段代码在游戏开始时加载成就信息,并在控制台输出每个成就的详细信息。
using UnityEngine;
using UnityEngine.SocialPlatforms;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
void Start()
{
Social.LoadAchievements(achievements => {
if (achievements.Length > 0)
{
Debug.Log("Got " + achievements.Length + " achievement instances");
string myAchievements = "My achievements:\n";
foreach (IAchievement achievement in achievements)
{
myAchievements += "\t" +
achievement.id + " " +
achievement.percentCompleted + " " +
achievement.completed + " " +
achievement.lastReportedDate + "\n";
}
Debug.Log(myAchievements);
}
else
Debug.Log("No achievements returned");
});
}
}
Social.ReportProgress
函数
这段代码用于向指定的排行榜报告分数,并在打印报告成功或失败的信息。
using UnityEngine;
using UnityEngine.SocialPlatforms;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
void ReportScore(long score, string leaderboardID)
{
Debug.Log("Reporting score " + score + " on leaderboard " + leaderboardID);
Social.ReportScore(score, leaderboardID, success => {
Debug.Log(success ? "Reported score successfully" : "Failed to report score");
});
}
}
排行榜功能
成员 | 类型 | 描述 | 实例 |
---|---|---|---|
CreateLeaderboard | 静态函数 | 创建一个 ILeaderboard 实例。 | Social.CreateLeaderboard() |
LoadScores | 静态函数 | 从给定的排行榜加载一组默认分数。 | Social.LoadScores(leaderboardID) |
ReportScore | 静态函数 | 向特定排行榜报告分数。 | Social.ReportScore(score, leaderboardID) |
ShowLeaderboardUI | 静态函数 | 显示游戏排行榜的默认/系统视图。 | Social.ShowLeaderboardUI() |
ILeaderboard
接口类型
以下是根据您提供的代码段,列出的成员、类型和描述的表格:
成员名称 | 返回类型/参数类型 | 描述 |
---|---|---|
SetUserFilter | void | 设置用户过滤器,只搜索指定的用户ID。 |
LoadScores | void | 加载排行榜分数,并在完成后调用回调函数。 |
loading | bool | 获取一个布尔值,指示排行榜是否正在加载分数。 |
id | string | 设置或获取排行榜的唯一标识符。 |
userScope | UserScope | 设置或获取排行榜搜索的用户范围。 |
range | Range | 设置或获取排行榜返回的排名范围。 |
timeScope | TimeScope | 设置或获取排行榜搜索的时间范围。 |
localUserScore | IScore | 获取当前登录用户的排行榜分数。 |
maxRange | uint | 获取排行榜包含的分数总数。 |
scores | IScore[] | 获取由查询返回的排行榜分数数组。 |
title | string | 获取排行榜的可读标题。 |
IScore
接口类型
以下是根据您提供的代码段,列出的成员、类型和描述的表格:
成员名称 | 类型 | 描述 |
---|---|---|
ReportScore | 方法(Action) | 报告分数的方法,回调函数接收一个布尔值表示操作成功或失败。 |
leaderboardID | string | 获取或设置这个分数所属的排行榜ID。 |
value | long | 获取或设置取得的分数值。 |
date | DateTime | 获取取得分数的日期。 |
formattedValue | string | 获取分数的正确格式化值,例如X点或X击杀。 |
userID | string | 获取拥有这个分数的用户的ID。 |
rank | int | 获取分数在排行榜中的排名或位置。 |
Social.CreateLeaderboard
函数
创建排行榜
这段代码定义了在游戏启动时创建一个排行榜实例,设置其ID并加载分数,然后在控制台输出加载的分数数量和每个分数的详细信息。
using UnityEngine;
using UnityEngine.SocialPlatforms;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
// Use this for initialization
void Start()
{
ILeaderboard leaderboard = Social.CreateLeaderboard();
leaderboard.id = "Leaderboard012";
leaderboard.LoadScores(result =>
{
Debug.Log("Received " + leaderboard.scores.Length + " scores");
foreach (IScore score in leaderboard.scores)
Debug.Log(score);
});
}
}
Social.LoadScores
函数
这段代码展示打印每个分数的用户ID、格式化后的分数值和得分日期,或者如果没有分数被加载,则输出"No scores loaded"。
using UnityEngine;
using UnityEngine.SocialPlatforms;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
void Start()
{
Social.LoadScores("Leaderboard01", scores => {
if (scores.Length > 0)
{
Debug.Log("Got " + scores.Length + " scores");
string myScores = "Leaderboard:\n";
foreach (IScore score in scores)
myScores += "\t" + score.userID + " " + score.formattedValue + " " + score.date + "\n";
Debug.Log(myScores);
}
else
Debug.Log("No scores loaded");
});
}
}
Social.ReportScore
函数
用于向指定的排行榜报告分数,并在打印报告成功或失败的信息
using UnityEngine;
using UnityEngine.SocialPlatforms;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
void ReportScore(long score, string leaderboardID)
{
Debug.Log("Reporting score " + score + " on leaderboard " + leaderboardID);
Social.ReportScore(score, leaderboardID, success => {
Debug.Log(success ? "Reported score successfully" : "Failed to report score");
});
}
}
参考地址
Apple Support : Play with friends in Game Center on Apple Vision Pro
Apple UnityPlugins - Github
Unity Document : Apple Social API
Apple Developer Game Center