使用玩家统计数据
本教程介绍如何创建和使用玩家统计数据。 玩家统计数据以键值对 (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
选择您的游戏。
从左侧菜单中选择 Leaderboards(Statistics 和 Leaderboards 密切相关)。
选择要修改的现有统计数据,或
选择 New Leaderboard 按钮。
- 对于现有统计数据,会有另一个包含 Edit Leaderboard 按钮的页面。
此时,可以看到如下所示的页面。
关于如何使用统计数据聚合的一些示例:
Max 和 Min 可用于保存最佳/最差分值,如“爆头”或“准确度”:
- 简而言之,它们应用以下规则:如果新分值比现有分数高(或低),则更新分值。
- 会话结束时发布统计数据,Min/Max 聚合负责是否更新。
- 这些对于可重置排行榜以及授予成就的 PlayStream 规则非常有用。
Sum 可用于保存经验值:
- 你发布此次战斗获得的经验,系统将其添加到玩家的现有统计数据值。
Last 允许您自行管理统计数据:
- 每次发布统计数据,都将使用最新值。
排行榜
为 PlayFab 中保存的所有统计数据生成排行榜。 访问特定统计数据的排行榜是可选功能。
在排行榜在游戏中的动态性方面,重置频率和聚合方法起着重要作用。 锦标赛功能侧重于具有自动重置频率的排行榜,有关此功能的详细信息,请参阅教程使用可重置统计数据和排行榜。
建议您以与游戏相关的各种方式使用统计数据。 您可以使用可重置统计数据来举行每日锦标赛,同时使用经验值等长期统计数据。