メインコンテンツまでスキップ

すべてを統合する - 統計データを追跡し表示する - (Unity モジュール)

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

プレイヤー統計を表示するために UI を接続する

  1. StatsProfileMenu_Starter クラスを開き、作成したラッパーを保存する変数を定義します。

    private StatsEssentialsWrapper_Starter statsWrapper;
  2. 次に、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();
    }
    }
  3. 次に、DisplayStats() 関数を以下のコードに置き換えます。これは statsPanelList から統計コードを収集し、統計値を取得するリクエストを送信します。完了すると、コールバック関数を呼び出します。

    private void DisplayStats()
    {
    widgetSwitcher.SetWidgetState(AccelByteWarsWidgetSwitcher.WidgetState.Loading);

    string[] statCodes = statsPanelList.SelectMany(x => x.statData.StatsCodes).ToArray();
    statsWrapper.GetUserStatsFromClient(statCodes, null, OnGetUserStatsCompleted);
    }
  4. 次に、統計値のエントリを生成するコールバック関数を作成します。エントリは、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);
    }
  5. 最後に、プロジェクトをコンパイルし、エラーがないことを確認します。

リソース