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

# イベントベース統計変更の処理

> XBOX Live のイベントベース統計変更通知を購読し、Real-Time Activity サービスを使用してハンドラーをクリーンアップするための XSAPI サンプル コード。

このトピックでは、イベントベース統計の変更を処理するためのサンプル コードを提供します。

**イベントベース統計の変更に関する通知を取得するには**

1. [統計変更ハンドラーを追加する](#ID4EM1)
2. [特定の統計変更を購読する](#ID4EM2)

**クリーンアップするには**

1. [統計変更ハンドラーを削除する](#ID4EM3)
2. [特定の統計変更の購読を解除する](#ID4EM4)

<a id="ID4EM1" />

## 統計変更ハンドラーを追加する

次のサンプル コードを使用して、統計変更通知のイベント ハンドラーを登録します。
イベント ハンドラーは [XblStatisticChangeEventArgs](/reference/live/xsapi-c/user_statistics_c/structs/xblstatisticchangeeventargs) オブジェクトを受け取ります。

#### Flat C API

```cpp theme={null}
void* context{ nullptr };
XblFunctionContext statisticChangedFunctionContext = XblUserStatisticsAddStatisticChangedHandler(
    xboxLiveContext,
    [](XblStatisticChangeEventArgs eventArgs, void* context) 
    {
        // Handle stat change. 
        LogToScreen("Statistic changed callback: stat changed (%s = %s)",
            eventArgs.latestStatistic.statisticName, 
            eventArgs.latestStatistic.value); 
    },
    context
);
```

詳細については、以下を参照してください。

* [XblStatisticChangeEventArgs](/reference/live/xsapi-c/user_statistics_c/structs/xblstatisticchangeeventargs)
* [XblUserStatisticsAddStatisticChangedHandler](/reference/live/xsapi-c/user_statistics_c/functions/xbluserstatisticsaddstatisticchangedhandler)

<a id="ID4EM2" />

## 特定の統計変更を購読する

次のサンプル コードを使用して、`XblUserStatisticsSubscribeToStatisticChange` ハンドラー経由で統計更新通知を購読します。

#### Flat C API

```cpp theme={null}
XblRealTimeActivitySubscriptionHandle subscriptionHandle{ nullptr };

HRESULT hr = XblUserStatisticsSubscribeToStatisticChange(
    xboxLiveContext,
    xboxUserId,
    scid,
    statisticName.c_str(),
    &subscriptionHandle
);
```

<a id="ID4EM3" />

## 統計変更ハンドラーを削除する

次のサンプル コードを使用して、統計変更通知のイベント ハンドラーを削除します。

#### Flat C API

```cpp theme={null}
XblUserStatisticsRemoveStatisticChangedHandler(
        xboxLiveContext,
        statisticChangedFunctionContext
);
```

<a id="ID4EM4" />

## 特定の統計変更の購読を解除する

次のサンプル コードを使用して、以前に作成された統計変更の購読を解除します。

#### Flat C API

```cpp theme={null}
hr = XblUserStatisticsUnsubscribeFromStatisticChange(
    xboxLiveContext,
    statisticChangeSubscriptionHandle
);
```


## Related topics

- [イベントベース統計 & リーダーボードのサンプル コード](/ja-jp/services/xbox-services/player-data/stats-leaderboards/event-based/how-to/live-statslb-eb-howto-nav.md)
- [イベントベース統計の取得](/ja-jp/services/xbox-services/player-data/stats-leaderboards/event-based/how-to/live-getting-eb-stat.md)
- [イベントベース統計を駆動するためのイベントの書き込み](/ja-jp/services/xbox-services/player-data/stats-leaderboards/event-based/how-to/live-sending-eb-stat.md)
- [イベントベースの統計とリーダーボード](/ja-jp/services/xbox-services/player-data/stats-leaderboards/event-based/live-statslb-eb-nav.md)
- [イベントベースの統計の概要](/ja-jp/services/xbox-services/player-data/stats-leaderboards/event-based/live-stats-eb-overview.md)
