使用高级排行榜的档案

使用 PlayFab 时,通常使用以下 API 方法构建排行榜:

结果是一个 PlayerLeaderboardEntry 对象列表,其中仅包含有关玩家及其与当前排行榜的关系的基本信息。

但是,PlayFab 还允许使用 PlayerProfileViewConstraints 获取有关每个玩家的其他信息。

注意

此示例假设您已有一些可以使用的排行榜数据。 有关生成一些测试数据的方法,请参阅访问已存档的锦标赛结果教程。

配置玩家档案视图约束

默认情况下,客户端 API 可能仅从其他玩家档案获取显示名称。 在本例中,我们将允许所有 玩家访问排行榜中有关其他 玩家的其他信息。

导航到作品的 Game Manager:

  1. 选择左侧菜单中的 设置 图标。
  2. 选择“游戏设置”。
  3. 然后选择" 客户端配置文件选项" 选项卡。
  4. 验证是否已选择 DisplayName
  5. 确保已选择 头像 URL
  6. 通过选择 Save Client Profile Options 按钮来提交更改。

Game Manager - Settings - Client Profile Options

测试

上一步允许客户端代码使用 DisplayNameAvatarUrl 配置文件约束。

以下示例说明如何使用任何提及的档案数据获取和输出排行榜。 有关详细信息,请参阅代码注释。

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 调用将失败并返回相应的错误。 结果看起来类似于下面提供的示例。

输出 - 显示排行榜

使用这种方法,您可以获取一些档案信息,包括其他统计数据值。