You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建PlayFab排行榜并通过PlayFab ID更新玩家统计数据?

PlayFab 排行榜创建与分数/统计数据更新指南

一、创建PlayFab排行榜(后台操作)

  • 登录PlayFab开发者后台,进入你的游戏项目
  • 左侧导航栏选择 Leaderboards,点击 New Leaderboard
  • 配置核心参数:
    • 输入排行榜名称(如TotalScore,需和后续代码中的统计名一致)
    • 选择排序方式(游戏场景通常用降序)
    • 设置统计数据类型(如Int,适配分数的整数存储)
    • 可选:配置刷新频率、显示范围等进阶选项
  • 保存后,排行榜即创建完成

二、通过PlayFab ID添加/更新玩家分数

推荐使用Server端SDK调用接口(安全性更高),直接传入玩家PlayFab ID和目标分数:

C# Server端示例

using PlayFab;
using PlayFab.ServerModels;

public async void UpdatePlayerScore(string playFabId, int targetScore)
{
    var updateRequest = new UpdatePlayerStatisticsRequest
    {
        PlayFabId = playFabId,
        Statistics = new List<StatisticUpdate>
        {
            new StatisticUpdate
            {
                StatisticName = "TotalScore", // 对应后台创建的排行榜名称
                Value = targetScore
            }
        }
    };

    var result = await PlayFabServerAPI.UpdatePlayerStatisticsAsync(updateRequest);
    if (result.Error != null)
    {
        // 错误处理示例:记录日志
        Console.WriteLine($"分数更新失败: {result.Error.Message}");
    }
    else
    {
        Console.WriteLine($"玩家 {playFabId} 分数更新成功");
    }
}

补充说明

  • 若需累加分数而非直接覆盖,可先调用GetPlayerStatistics获取当前分数,计算后再传入新值
  • 若使用Client端SDK,替换为PlayFabClientAPI.UpdatePlayerStatisticsAsync,需确保玩家已完成登录且权限配置允许

三、更新玩家自定义统计数据

逻辑与分数更新一致,只需修改StatisticName为自定义统计项(如WinCount、PlayTime):

C# 累加胜利次数示例

using PlayFab;
using PlayFab.ServerModels;
using System.Linq;

public async void UpdateWinCount(string playFabId)
{
    // 第一步:获取当前胜利次数
    var getRequest = new GetPlayerStatisticsRequest
    {
        PlayFabId = playFabId,
        StatisticNames = new List<string> { "WinCount" }
    };

    var getResult = await PlayFabServerAPI.GetPlayerStatisticsAsync(getRequest);
    if (getResult.Error != null)
    {
        Console.WriteLine($"获取统计数据失败: {getResult.Error.Message}");
        return;
    }

    int currentWins = 0;
    var existingStat = getResult.Result.Statistics.FirstOrDefault(s => s.StatisticName == "WinCount");
    if (existingStat != null) currentWins = existingStat.Value;

    // 第二步:更新胜利次数+1
    var updateRequest = new UpdatePlayerStatisticsRequest
    {
        PlayFabId = playFabId,
        Statistics = new List<StatisticUpdate>
        {
            new StatisticUpdate
            {
                StatisticName = "WinCount",
                Value = currentWins + 1
            }
        }
    };

    var updateResult = await PlayFabServerAPI.UpdatePlayerStatisticsAsync(updateRequest);
    if (updateResult.Error != null)
    {
        Console.WriteLine($"胜利次数更新失败: {updateResult.Error.Message}");
    }
}

四、获取排行榜数据(可选)

若需在游戏内展示排行榜,调用GetLeaderboard接口:

using PlayFab;
using PlayFab.ServerModels;

public async void GetTopLeaderboard(int topEntries)
{
    var request = new GetLeaderboardRequest
    {
        StatisticName = "TotalScore",
        MaxResultsCount = topEntries
    };

    var result = await PlayFabServerAPI.GetLeaderboardAsync(request);
    if (result.Error != null)
    {
        Console.WriteLine($"获取排行榜失败: {result.Error.Message}");
    }
    else
    {
        foreach (var entry in result.Result.Leaderboard)
        {
            Console.WriteLine($"排名 {entry.Position + 1}: {entry.DisplayName} - 分数 {entry.StatValue}");
        }
    }
}

内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:45:29