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

- [타이틀 관리 통계 및 리더보드 예제 코드](/ko/services/xbox-services/player-data/stats-leaderboards/title-managed/how-to/live-statslb-tm-howto-nav.md)
- [타이틀 관리 통계 및 리더보드 구성](/ko/services/xbox-services/player-data/stats-leaderboards/title-managed/config/live-tm-leaderboards-portal.md)
- [이벤트 기반 통계 대 타이틀 관리 통계](/ko/services/xbox-services/player-data/stats-leaderboards/live-stats-eb-vs-tm.md)
- [타이틀 관리 주요 통계 포털 구성](/ko/services/xbox-services/player-data/stats-leaderboards/featured-stats/config/live-featuredstats-tm-portal.md)
- [타이틀 관리 통계 및 리더보드](/ko/services/xbox-services/player-data/stats-leaderboards/title-managed/live-statslb-tm-nav.md)
