> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 依統計資料為玩家排名

> 將 PlayFab 排行榜連結至 Statistic 定義，讓玩家統計資料的更新自動饋入排行榜項目，依追蹤的值為玩家排名。

在本教學課程中，我們將學習如何同時使用 Leaderboards 和 Statistics 服務。最終結果是，當實體上的統計資料更新時，會自動反映在對應的排行榜上。
如需 PlayFab Statistics 的詳細資訊，請參閱 \[Statistics 概觀]\([PlayFab Statistics 概觀](/zh-TW/services/playfab/player-progression/statistics))。

讓我們從一個同時使用這兩項服務的射擊遊戲範例開始。我們將利用
[建立基本統計資料](/zh-TW/services/playfab/player-progression/statistics/create-basic-statistics)教學課程，並假設我們已經
為遊戲建立了統計資料。現在，我們想要在每次玩家於對戰中命中遠距射擊時進行追蹤。我們將建立
一個記錄玩家最佳遠距射擊的統計資料，以及一個列出最擅長遠距射擊之玩家的排行榜。

## 建立連結至統計資料的排行榜

第一步是建立排行榜定義，使其能夠將 Statistics 服務追蹤的資訊作為輸入。
下列範例說明如何使用 C# SDK 建立排行榜定義。

```C# theme={null}

public static async Task CreateStatLinkedLeaderboardDefinitionAsync(PlayFabAuthenticationContext context, string leaderboardName, string statName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);
    CreateLeaderboardDefinitionRequest leaderboardDefinitionRequest = new CreateLeaderboardDefinitionRequest()
    {
        AuthenticationContext = context,
        EntityType = EntityType,
        Name = leaderboardName,
        SizeLimit = 1000,
        VersionConfiguration = new VersionConfiguration()
        {
            MaxQueryableVersions = 1,
            ResetInterval = ResetInterval.Manual,
        },
        Columns = new List<LeaderboardColumn>()
        {
            new LeaderboardColumn()
            {
                Name = "Distance",
                SortDirection = LeaderboardSortDirection.Descending,
                LinkedStatisticColumn = new LinkedStatisticColumn()
                {
                    LinkedStatisticName = statName,
                    LinkedStatisticColumnName = "Distance",
                }
            },
            new LeaderboardColumn()
            {
                Name = "Caliber of the bullet",
                SortDirection = LeaderboardSortDirection.Ascending,
                LinkedStatisticColumn = new LinkedStatisticColumn()
                {
                    LinkedStatisticName = statName,
                    LinkedStatisticColumnName = "Caliber",
                }
            }
        }
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> createLbDefinitionResult = await leaderboardsAPI.CreateLeaderboardDefinitionAsync(leaderboardDefinitionRequest);
}
```

現在，讓我們說明這與我們之前建立的其他排行榜定義的主要差異。請注意 `LeaderboardColumn` 物件，它有一個名為 `LinkedStatisticColumn` 的屬性，可讓我們在
統計資料與排行榜之間建立連結。我們需要指定統計資料名稱以及該統計資料中的欄名稱，才能建立對應。

透過這種方式，我們使用 Statistics 服務追蹤玩家的進度。接著 Leaderboard 服務會使用
這些資訊來填入連結的排行榜。

## 將統計資料與排行榜取消連結

此服務也提供一種機制，可在需要時將統計資料與排行榜取消連結。開發人員可能會因為多種
原因而想要執行此動作，例如測試不同的設定或對應
不同的統計資料。下列範例說明如何使用 C# SDK 將統計資料與排行榜取消連結。

```C# theme={null}
public static async Task UnlinkLeaderboard(PlayFabAuthenticationContext context, string statName, string leaderboardName)
{
    PlayFabProgressionInstanceAPI leaderboardsAPI = new PlayFabProgressionInstanceAPI(context);

    UnlinkLeaderboardFromStatisticRequest unlinkLbRequest = new UnlinkLeaderboardFromStatisticRequest()
    {
        AuthenticationContext = context,
        Name = leaderboardName,
        StatisticName = statName,
    };

    PlayFabResult<PlayFab.LeaderboardsModels.EmptyResponse> lbResponse = await leaderboardsAPI.UnlinkLeaderboardFromStatisticAsync(unlinkLbRequest);
}
```

有了這些資訊，我們就能在必要時將統計資料與排行榜連結或取消連結。請記住以下幾項重要的限制：

* 排行榜無法直接更新，一律應透過統計資料更新來使用自動機制。
* 排行榜無法獨立於統計資料遞增其版本。
* 除非經過取消連結流程，否則無法刪除排行榜。

## 結論

在本教學課程中，我們學到了如何建立由統計資料驅動的排行榜，以及如何將這些服務取消連結。
如需其他功能的詳細資訊，請參閱下列頁面：

* [建立基本排行榜](/zh-TW/services/playfab/community/leaderboards/create-basic-leaderboard)。
* [季節性排行榜](/zh-TW/services/playfab/community/leaderboards/seasonal-leaderboards)。
* [群組排行榜](/zh-TW/services/playfab/community/leaderboards/group-leaderboards)。
* [限制](/zh-TW/services/playfab/community/leaderboards/limits-leaderboards)。
* [配額](/zh-TW/services/playfab/community/leaderboards/quota-leaderboards)。
* [手動層級](/zh-TW/services/playfab/community/leaderboards/manual-tiers)。
* [使用排行榜執行更多操作](/zh-TW/services/playfab/community/leaderboards/doing-more-with-leaderboards)。
* [將內容相關資料新增至排行榜](/zh-TW/services/playfab/community/leaderboards/metadata-leaderboards)。
* [API 參考](/zh-TW/services/playfab/community/leaderboards/api-reference)。
* [排行榜與 Cloudscript](/zh-TW/services/playfab/community/leaderboards/leaderboards-cloudscript)。
* [排行榜與 Playstream](/zh-TW/services/playfab/community/leaderboards/leaderboards-with-playstream-and-telemetry)


## Related topics

- [排行榜 API 參考](/zh-TW/services/playfab/community/leaderboards/api-reference.md)
- [將內容相關資料新增至排行榜](/zh-TW/services/playfab/community/leaderboards/metadata-leaderboards.md)
- [使用排行榜執行更多操作](/zh-TW/services/playfab/community/leaderboards/doing-more-with-leaderboards.md)
- [錦標賽與排行榜](/zh-TW/services/playfab/community/leaderboards/tournaments-leaderboards/index.md)
- [手動層級排行榜](/zh-TW/services/playfab/community/leaderboards/manual-tiers.md)
