> ## 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 最近写入的值。但是，**该统计信息的全局排行榜仅保留每位玩家的最高记录值**，因此写入较低的值不会降低玩家的排行榜位置。有关详细信息和替代方案，请参阅[标题管理的统计信息概述](/services/xbox-services/player-data/stats-leaderboards/title-managed/live-stats-tm-overview)和 [`XblLeaderboardQuery`](/reference/live/xsapi-c/leaderboard_c/structs/xblleaderboardquery) 参考文档。</Note>

## 仅更新指定的标题管理统计信息

您可以通过调用 [XblTitleManagedStatsUpdateStatsAsync](/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](/reference/system/xasync/structs/xasyncblock)
* [XAsyncGetStatus](/reference/system/xasync/functions/xasyncgetstatus)
* [XblTitleManagedStatistic](/reference/live/xsapi-c/title_managed_statistics_c/structs/xbltitlemanagedstatistic)
* [XblTitleManagedStatsUpdateStatsAsync](/reference/live/xsapi-c/title_managed_statistics_c/functions/xbltitlemanagedstatsupdatestatsasync)

## 写入您要保留的所有统计信息，并删除其余部分

要仅写入您想要保留的标题管理统计信息，并删除其余部分，请使用您要写入的所有统计信息调用 [XblTitleManagedStatsWriteAsync](/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](/reference/system/xasync/functions/xasyncgetstatus)
* [XblTitleManagedStatistic](/reference/live/xsapi-c/title_managed_statistics_c/structs/xbltitlemanagedstatistic)
* [XblTitleManagedStatsWriteAsync](/reference/live/xsapi-c/title_managed_statistics_c/functions/xbltitlemanagedstatswriteasync)
* [XblTitleManagedStatType](/reference/live/xsapi-c/title_managed_statistics_c/enums/xbltitlemanagedstattype)


## Related topics

- [标题管理的统计信息和排行榜示例代码](/zh-CN/services/xbox-services/player-data/stats-leaderboards/title-managed/how-to/live-statslb-tm-howto-nav.md)
- [配置标题管理的统计信息和排行榜](/zh-CN/services/xbox-services/player-data/stats-leaderboards/title-managed/config/live-tm-leaderboards-portal.md)
- [基于事件的统计信息与标题管理的统计信息](/zh-CN/services/xbox-services/player-data/stats-leaderboards/live-stats-eb-vs-tm.md)
- [标题管理的统计信息和排行榜门户配置](/zh-CN/services/xbox-services/player-data/stats-leaderboards/title-managed/config/live-statslb-tm-config-nav.md)
- [标题管理精选统计信息的门户配置](/zh-CN/services/xbox-services/player-data/stats-leaderboards/featured-stats/config/live-featuredstats-tm-portal.md)
