すべてを統合する - 統計データを追跡し表示する - (Unity モジュール)
Last updated on February 4, 2026
注釈:本資料はAI技術を用いて翻訳されています。
プレイヤー統計を表示するために UI を接続する
-
StatsProfileMenu_Starterクラスを開き、作成したラッパーを保存する変数を定義します。private StatsEssentialsWrapper_Starter statsWrapper; -
次に、
OnEnable()関数を以下のコードに置き換えます。これはラッパーを初期化し、StatsEssentialsModelsクラスのモデルに基づいた統計コードのリストと、ターゲットの GameObject パネルをstatsPanelListに保存します。後でstatsPanelListを使用して統計値のエントリを表示できます。void OnEnable()
{
statsWrapper ??= TutorialModuleManager.Instance.GetModuleClass<StatsEssentialsWrapper_Starter>();
statsPanelList ??= new()
{
(SinglePlayerStatsData, singlePlayerStatsPanel),
(EliminationStatsData, eliminationPlayerStatsPanel),
(TeamDeathmatchStatsData, teamDeathmatchPlayerStatsPanel)
};
if (statsWrapper != null)
{
DisplayStats();
}
} -
次に、
DisplayStats()関数を以下のコードに置き換えます。これはstatsPanelListから統計コードを収集し、統計値を取得するリクエストを送信します。完了すると、コールバック関数を呼び出します。private void DisplayStats()
{
widgetSwitcher.SetWidgetState(AccelByteWarsWidgetSwitcher.WidgetState.Loading);
string[] statCodes = statsPanelList.SelectMany(x => x.statData.StatsCodes).ToArray();
statsWrapper.GetUserStatsFromClient(statCodes, null, OnGetUserStatsCompleted);
} -
次に、統計値のエントリを生成するコールバック関数を作成します。エントリは、
statsPanelListのパネルとデータを使用して、ゲームモードに基づいてグループで初期化されます。private void OnGetUserStatsCompleted(Result<PagedStatItems> result)
{
if (result.IsError)
{
widgetSwitcher.SetWidgetState(AccelByteWarsWidgetSwitcher.WidgetState.Error);
return;
}
if (result.Value.data.Length <= 0)
{
widgetSwitcher.SetWidgetState(AccelByteWarsWidgetSwitcher.WidgetState.Empty);
return;
}
// Generate entries to display statistics in groups.
StatItem[] statItems = result.Value.data;
statsPanelList.Select(x => x.panel).ToList().ForEach(x => x.DestroyAllChildren());
foreach ((GameStatsData statData, Transform panel) statsPanel in statsPanelList)
{
foreach (GameStatsData.GameStatsModel model in statsPanel.statData.StatsModels)
{
StatItem statItem = statItems.FirstOrDefault(x => x.statCode == model.StatCode);
StatsProfileEntry entry = Instantiate(statsEntryPrefab, statsPanel.panel).GetComponent<StatsProfileEntry>();
entry.Setup(model.DisplayName, statItem != null ? (int)statItem.value : 0);
}
}
widgetSwitcher.SetWidgetState(AccelByteWarsWidgetSwitcher.WidgetState.Not_Empty);
} -
最後に、プロジェクトをコンパイルし、エラーがないことを確認します。
リソース
-
このチュートリアルで使用されているファイルは、Unity Byte Wars GitHub リポジトリで入手できます。