다음을 통해 공유


타이틀 관리 통계 작성

이 항목에서는 타이틀 관리 통계를 작성하는 방법을 보여 주는 예제 코드를 제공합니다.

지정된 타이틀 관리 통계만 업데이트

사용자 통계를 선택적으로 업데이트하는 XblTitleManagedStatsUpdateStatsAsync를 호출하여 업데이트하려는 지정된 통계를 보낼 수 있습니다. 지정된 통계는 이미 존재하는 경우에만 덮어씁니다. XblTitleManagedStatsUpdateStatsAsync 호출에 지정되지 않은 모든 통계는 변경되지 않은 상태로 유지됩니다.

C API

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();
}

참조

유지하려는 통계를 모두 작성하고 나머지를 삭제

유지하려는 타이틀 관리 통계만 작성하고 나머지는 삭제하려면 작성하려는 모든 통계에 XblTitleManagedStatsWriteAsync를 호출합니다. 호출에 포함되지 않은 통계는 모두 제거됩니다. 이 호출은 서비스의 마지막 통계 문서를 사용자가 설정한 값만 포함하는 새 통계 문서로 교체합니다.

C API

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();
}

참조