按统计信息对玩家进行排名
在本教程中,我们将了解如何同时使用排行榜和统计信息服务。 最终结果是,在实体上更新统计信息时,会自动反映在相应的排行榜上。 有关 Azure PlayFab 统计信息的详细信息,请参阅 统计信息概述。
让我们从使用这两种服务的射击游戏的示例开始。 在这里,我们将利用 创建基本统计信息 的教程,并继续假设我们已经为游戏创建了统计信息。 现在,我们希望在玩家每次在比赛中命中时跟踪长射。 我们将有一个统计数据,记录球员的最佳远射和排行榜,最好的球员击中长枪。
创建链接到统计信息的排行榜
第一步是创建一个排行榜定义,该定义可将统计信息服务跟踪的信息作为输入。 以下示例演示如何使用 C# SDK 创建排行榜定义。
public static async Task CreateStatLinkedLeaderboardDefinitionAsync(PlayFabAuthenticationContext context, string leaderboardName, string statName)
{
PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
CreateLeaderboardDefinitionRequest leaderboardDefinitionRequest = new CreateLeaderboardDefinitionRequest()
{
AuthenticationContext = context,
EntityType = EntityType,
Name = leaderboardName,
SizeLimit = 1000,
VersionConfiguration = new VersionConfiguration()
{
MaxQueryableVersions = 1,
ResetInterval = ResetInterval.Manual,
},
Columns = new List<LeaderboardColumn>()
{
new LeaderboardColumn()
{
Name = "Distance",
SortDirection = LeaderboardSortDirection.Descending,
LinkedStatisticColumn = new LinkedStatisticColumn()
{
LinkedStatisticName = statName,
LinkedStatisticColumnName = "Distance",
}
},
new LeaderboardColumn()
{
Name = "Caliber of the bullet",
SortDirection = LeaderboardSortDirection.Ascending,
LinkedStatisticColumn = new LinkedStatisticColumn()
{
LinkedStatisticName = statName,
LinkedStatisticColumnName = "Caliber",
}
}
}
};
PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createLbDefinitionResult = await leaderboardsAPI.CreateLeaderboardDefinitionAsync(leaderboardDefinitionRequest);
}
现在,我们来解释与之前创建的其他排行榜定义的main差异。 请注意 对象 LeaderboardColumn
,该对象具有名为 的属性 LinkedStatisticColumn
,该属性允许我们在统计信息和排行榜之间创建链接。 我们需要在该统计信息中指定统计信息名称和列名才能进行映射。
通过执行此操作,我们将通过统计信息服务跟踪玩家的进度。 然后,排行榜服务使用此信息并填充链接的排行榜。
取消链接排行榜中的统计信息
该服务还具有一种机制,可根据需要取消统计信息与排行榜的链接。 开发人员想要执行此操作的原因可能有多种,例如测试不同的配置或映射不同的统计信息。 以下示例演示如何使用 C# SDK 取消统计信息与排行榜的链接。
public static async Task UnlinkLeaderboard(PlayFabAuthenticationContext context, string statName, string leaderboardName)
{
PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
UnlinkLeaderboardFromStatisticRequest unlinkLbRequest = new UnlinkLeaderboardFromStatisticRequest()
{
AuthenticationContext = context,
Name = leaderboardName,
StatisticName = statName,
};
PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> lbResponse = await leaderboardsAPI.UnlinkLeaderboardFromStatisticAsync(unlinkLbRequest);
}
使用此信息,我们随时可以链接和取消链接排行榜中的统计信息。 需要记住一些重要的约束:
- 排行榜不能直接更新,它应始终通过统计信息更新来利用自动机制。
- 排行榜不能独立于统计信息递增其版本。
- 除非我们完成取消链接过程,否则无法删除排行榜。
结论
在本教程中,我们学习了如何创建由统计信息提供支持的排行榜,以及如何取消链接服务。 有关其他功能的详细信息,请参阅以下页面:
- 创建基本排行榜。
- 季节性排行榜。
- 组排行榜。
- 手动层。
- 使用排行榜执行更多操作。
- 将上下文数据添加到排行榜。
- API 参考。