使用高级排行榜的档案
使用 PlayFab 时,通常使用以下 API 方法构建排行榜:
结果是一个 PlayerLeaderboardEntry 对象列表,其中仅包含有关玩家及其与当前排行榜的关系的基本信息。
但是,PlayFab 还允许使用 PlayerProfileViewConstraints 获取有关每个玩家的其他信息。
注意
此示例假设您已有一些可以使用的排行榜数据。 有关生成一些测试数据的方法,请参阅访问已存档的锦标赛结果教程。
配置玩家档案视图约束
默认情况下,客户端 API 可能仅从其他玩家档案获取显示名称。 在本例中,我们将允许所有 玩家访问排行榜中有关其他 玩家的其他信息。
导航到作品的 Game Manager:
- 选择左侧菜单中的 设置 图标。
- 选择“游戏设置”。
- 然后选择" 客户端配置文件选项" 选项卡。
- 验证是否已选择 DisplayName。
- 确保已选择 头像 URL。
- 通过选择 Save Client Profile Options 按钮来提交更改。
测试
上一步允许客户端代码使用 DisplayName
和 AvatarUrl
配置文件约束。
以下示例说明如何使用任何提及的档案数据获取和输出排行榜。 有关详细信息,请参阅代码注释。
private static async Task DoReadLeaderboard()
{
// Get Leaderboard Request
var result = await PlayFabClientAPI.GetLeaderboardAsync(new GetLeaderboardRequest()
{
// Specify your statistic name here
StatisticName = "TestScore",
// Override Player Profile View Constraints and fetch player DisplayName and AvatarUrl
ProfileConstraints = new PlayerProfileViewConstraints()
{
ShowDisplayName = true,
ShowAvatarUrl = true
}
});
// Start printing the leaderboard
Console.WriteLine("=== LEADERBOARD ===");
if (result.Error != null)
{
// Handle error if any
Console.WriteLine(result.Error.GenerateErrorReport());
}
else
{
// Traverse the leaderboard list
foreach (var entry in result.Result.Leaderboard)
{
// Print regular leaderboard entry information
Console.WriteLine($"{entry.Position + 1} {entry.PlayFabId} {entry.StatValue}");
// Additionally print display name and avatar url that comes from player profile
Console.WriteLine($" {entry.Profile.DisplayName} | {entry.Profile.AvatarUrl}");
}
}
}
注意
仅当客户端使用“档案约束”明确要求时,各个档案字段才 可用。 另请注意,如果 Game Manager 中未 允许某些档案约束,而客户端请求它们,则 API 调用将失败并返回相应的错误。 结果看起来类似于下面提供的示例。
使用这种方法,您可以获取一些档案信息,包括其他统计数据值。