> ## 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.

# 寫入遊戲管理型統計資料

> 呼叫 XblTitleManagedStatsUpdateStatsAsync 以選擇性更新玩家遊戲管理型 XBOX Live 統計資料值的 XSAPI 範例程式碼。

本主題提供示範如何寫入遊戲管理型統計資料的範例程式碼。

<Note>儲存的統計資料值反映透過這些 API 最近寫入的值。不過，**該統計資料的全域排行榜只會保留每位玩家記錄的最高值**，因此寫入較低的值並不會降低玩家在排行榜上的位置。如需詳細資訊與替代方案，請參閱[遊戲管理型統計資料概觀](/zh-TW/services/xbox-services/player-data/stats-leaderboards/title-managed/live-stats-tm-overview)以及 [`XblLeaderboardQuery`](/zh-TW/reference/live/xsapi-c/leaderboard_c/structs/xblleaderboardquery) 參考。</Note>

## 只更新指定的遊戲管理型統計資料

您可以呼叫 [XblTitleManagedStatsUpdateStatsAsync](/zh-TW/reference/live/xsapi-c/title_managed_statistics_c/functions/xbltitlemanagedstatsupdatestatsasync) 傳送您要更新的指定統計資料，這會選擇性地更新呼叫端使用者的統計資料。
只有在指定的統計資料已存在時才會覆寫。未在 `XblTitleManagedStatsUpdateStatsAsync` 呼叫中指定的任何統計資料都會維持不變。

**C API**

```cpp theme={null}
std::vector<XblTitleManagedStatistic> stats{ s_svd->Stats() };
auto stat1 = std::find_if(stats.begin(), stats.end(), [](const XblTitleManagedStatistic& s)
{
    return std::string{ "AddedStat" } == s.statisticName;
});

auto asyncBlock = std::make_unique<XAsyncBlock>();
asyncBlock->queue = Data()->queue;
asyncBlock->callback = [](XAsyncBlock* asyncBlock)
{
    std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock }; // Take over ownership of the XAsyncBlock*
    HRESULT hr = XAsyncGetStatus(asyncBlock, false);
};

HRESULT hr = XblTitleManagedStatsUpdateStatsAsync(
    Data()->xboxLiveContext,
    &(*stat1),
    1,
    asyncBlock.get()
);

if (SUCCEEDED(hr))
{
    // The call succeeded, so release the std::unique_ptr ownership of XAsyncBlock* since the callback will take over ownership.
    // If the call fails, the std::unique_ptr will keep ownership and delete the XAsyncBlock*
    asyncBlock.release();
}
```

**參考**

* [XAsyncBlock](/zh-TW/reference/system/xasync/structs/xasyncblock)
* [XAsyncGetStatus](/zh-TW/reference/system/xasync/functions/xasyncgetstatus)
* [XblTitleManagedStatistic](/zh-TW/reference/live/xsapi-c/title_managed_statistics_c/structs/xbltitlemanagedstatistic)
* [XblTitleManagedStatsUpdateStatsAsync](/zh-TW/reference/live/xsapi-c/title_managed_statistics_c/functions/xbltitlemanagedstatsupdatestatsasync)

## 寫入您要保留的所有統計資料，並刪除其餘統計資料

若要只寫入您要保留的遊戲管理型統計資料並刪除其餘的統計資料，請以您要寫入的所有統計資料呼叫 [XblTitleManagedStatsWriteAsync](/zh-TW/reference/live/xsapi-c/title_managed_statistics_c/functions/xbltitlemanagedstatswriteasync)。
未包含在呼叫中的任何統計資料都會被移除。此呼叫會以只包含您所傳送之值的新統計資料文件，取代服務上的最後一份統計資料文件。

**C API**

```cpp theme={null}
std::vector<XblTitleManagedStatistic> statList;
statList.push_back(XblTitleManagedStatistic{ "MyStatName1", XblTitleManagedStatType::Number, 200 });
statList.push_back(XblTitleManagedStatistic{ "MyStatName2", XblTitleManagedStatType::String, 0, "SomeValue" });

auto asyncBlock = std::make_unique<XAsyncBlock>();
asyncBlock->queue = queue;
asyncBlock->context = nullptr;
asyncBlock->callback = [](XAsyncBlock* asyncBlock)
{
    std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock }; // Take over ownership of the XAsyncBlock*
    HRESULT hr = XAsyncGetStatus(asyncBlock, false);
};

HRESULT hr = XblTitleManagedStatsWriteAsync(
    xboxLiveContext, 
    xboxUserId, 
    statList.data(), statList.size(), 
    asyncBlock.get());
if (SUCCEEDED(hr))
{
    // The call succeeded, so release the std::unique_ptr ownership of XAsyncBlock* since the callback will take over ownership.
    // If the call fails, the std::unique_ptr will keep ownership and delete the XAsyncBlock*
    asyncBlock.release();
}
```

**參考**

* [XAsyncGetStatus](/zh-TW/reference/system/xasync/functions/xasyncgetstatus)
* [XblTitleManagedStatistic](/zh-TW/reference/live/xsapi-c/title_managed_statistics_c/structs/xbltitlemanagedstatistic)
* [XblTitleManagedStatsWriteAsync](/zh-TW/reference/live/xsapi-c/title_managed_statistics_c/functions/xbltitlemanagedstatswriteasync)
* [XblTitleManagedStatType](/zh-TW/reference/live/xsapi-c/title_managed_statistics_c/enums/xbltitlemanagedstattype)


## Related topics

- [遊戲管理型統計資料概觀](/zh-TW/services/xbox-services/player-data/stats-leaderboards/title-managed/live-stats-tm-overview.md)
- [遊戲管理型統計資料與排行榜範例程式碼](/zh-TW/services/xbox-services/player-data/stats-leaderboards/title-managed/how-to/live-statslb-tm-howto-nav.md)
- [設定遊戲管理型統計資料與排行榜](/zh-TW/services/xbox-services/player-data/stats-leaderboards/title-managed/config/live-tm-leaderboards-portal.md)
- [操作說明](/zh-TW/services/xbox-services/player-data/stats-leaderboards/title-managed/how-to/index.md)
- [事件型統計資料與遊戲管理型統計資料](/zh-TW/services/xbox-services/player-data/stats-leaderboards/live-stats-eb-vs-tm.md)
