使用玩家统计数据

本教程介绍如何创建和使用玩家统计数据。 玩家统计数据以键值对 (KVP) 形式存储,其中键为字符串,值为 32 位整数(以兼容不支持 64 位架构的语言)。

排行榜也使用玩家统计数据,但本指南仅介绍玩家统计数据。 如果需要了解玩家统计数据如何与排行榜配合使用,请阅读我们的教程使用可重置统计数据和排行榜

注意

在某些文档和 API 调用中,您可能会遇到术语 UserStatistics。 出于本讨论的目的,术语用户玩家 是相同且可互换的。 在 Game Manager 页面中,Players 选项卡提供对游戏的用户/玩家的访问,并在其中提供用户/玩家的统计数据。 玩家统计数据特指与玩家绑定的信息,而不是有关玩家的分析信息。

客户端 API

客户端可以访问读取玩家统计数据,但为了防止作弊,默认情况下,客户端无法更新统计数据。

启用此功能:

  • 登录 PlayFab
  • 选择您的游戏
  • 从左侧菜单中选择 Settings
  • 选择“API 功能”选项卡。
  • 找到并激活 Allow client to post player statistics

注意

这样做将禁用游戏的安全层,允许玩家将任意分数发布到其所有统计数据。 如果游戏具有任何 竞赛性设计,建议绝不允许 从客户端发布统计数据。

统计数据是公开信息

没有私有或仅限服务器的统计数据。 玩家始终可通过 GetPlayerStatistics 读取其所有统计数据,并且可以通过排行榜 API 调用读取所有其他玩家的统计数据。 即使您 在游戏中显示统计数据或不使用排行榜,也是如此。

唯一的例外是您通过 API 访问策略禁用客户端功能。 有关如何使用游戏策略设置更多信息,请访问上面的链接(这属于高级主题,本教程不作介绍)。

设置统计数据

以下 Unity/C# 代码为玩家创建(或更新,如果已存在)strength statistic 值。

PlayFabClientAPI.UpdatePlayerStatistics( new UpdatePlayerStatisticsRequest {
    // request.Statistics is a list, so multiple StatisticUpdate objects can be defined if required.
    Statistics = new List<StatisticUpdate> {
        new StatisticUpdate { StatisticName = "strength", Value = 18 },
    }
},
result => { Debug.Log("User statistics updated"); },
error => { Debug.LogError(error.GenerateErrorReport()); });

获取统计数据

以下 Unity/C# 代码检索玩家的所有当前统计数据值。

void GetStatistics()
{
    PlayFabClientAPI.GetPlayerStatistics(
        new GetPlayerStatisticsRequest(),
        OnGetStatistics,
        error => Debug.LogError(error.GenerateErrorReport())
    );
}

void OnGetStatistics(GetPlayerStatisticsResult result)
{
    Debug.Log("Received the following Statistics:");
    foreach (var eachStat in result.Statistics)
        Debug.Log("Statistic (" + eachStat.StatisticName + "): " + eachStat.Value);
}

聚合方法

PlayFab 支持统计数据聚合的一些便利选项。 四个选择包括:

  • Last
  • 最小
  • 最大
  • 总和

可以通过 CreatePlayerStatisticDefinition API 调用创建统计数据定义,但这不是必需的。 任何更新游戏玩家统计数据的调用都将使用 Last 聚合方法自动 创建默认的统计数据定义。

要更改统计数据聚合方法,可以使用 Game Manager 或 UpdatePlayerStatisticDefinition API 调用。

Game Manager 中编辑统计数据定义:

  • 登录 PlayFab

  • 选择您的游戏

  • 从左侧菜单中选择 LeaderboardsStatisticsLeaderboards 密切相关)。

  • 选择要修改的现有统计数据,或

  • 选择 New Leaderboard 按钮。

    • 对于现有统计数据,会有另一个包含 Edit Leaderboard 按钮的页面。
  • 此时,可以看到如下所示的页面。

    PlayFab Leaderboards - Edit Leaderboard - Stat aggregation

关于如何使用统计数据聚合的一些示例:

  • MaxMin 可用于保存最佳/最差分值,如“爆头”或“准确度”:

    • 简而言之,它们应用以下规则:如果新分值比现有分数高(或低),则更新分值
    • 会话结束时发布统计数据,Min/Max 聚合负责是否更新。
    • 这些对于可重置排行榜以及授予成就的 PlayStream 规则非常有用。
  • Sum 可用于保存经验值:

    • 你发布此次战斗获得的经验,系统将其添加到玩家的现有统计数据值。
  • Last 允许您自行管理统计数据:

    • 每次发布统计数据,都将使用最新值。

排行榜

为 PlayFab 中保存的所有统计数据生成排行榜。 访问特定统计数据的排行榜是可选功能。

在排行榜在游戏中的动态性方面,重置频率和聚合方法起着重要作用。 锦标赛功能侧重于具有自动重置频率的排行榜,有关此功能的详细信息,请参阅教程使用可重置统计数据和排行榜

建议您以与游戏相关的各种方式使用统计数据。 您可以使用可重置统计数据来举行每日锦标赛,同时使用经验值等长期统计数据。