統計データプロファイルメニュー - 統計データを追跡し表示する - (Unreal Engine モジュール)
注釈:本資料はAI技術を用いて翻訳されています。
メニューの内容
このチュートリアルでは、AccelByte Gaming Services (AGS) に保存されているユーザーの統計データを表示するシンプルな統計データプロファイルメニューウィジェットを準備する方法を学びます。
コードを追加する統計データプロファイルメニューはすでに作成されています。ファイルはリソースで入手でき、4つのパートで構成されています:
-
StatsProfileWidget_Starter: プレイヤーの統計データリストを表示するC++クラス。- ヘッダーファイル:
/Source/AccelByteWars/TutorialModules/Storage/StatisticsEssentials/UI/StatsProfileWidget_Starter.h - CPPファイル:
/Source/AccelByteWars/TutorialModules/Storage/StatisticsEssentials/UI/StatsProfileWidget_Starter.cpp - Blueprintウィジェット:
/Content/TutorialModules/Storage/StatisticsEssentials/W_StatsProfile_Starter.uasset
- ヘッダーファイル:
-
StatsProfileWidgetEntry: プレイヤーの個別の統計データ名と値を表示するC++クラス。- ヘッダーファイル:
/Source/AccelByteWars/TutorialModules/Storage/StatisticsEssentials/UI/Components/StatsProfileWidgetEntry.h - CPPファイル:
/Source/AccelByteWars/TutorialModules/Storage/StatisticsEssentials/UI/Components/StatsProfileWidgetEntry.cpp - Blueprintウィジェット:
/Content/TutorialModules/Storage/StatisticsEssentials/Components/W_StatsProfileEntry.uasset
- ヘッダーファイル:
-
DT_GameStats: 統計データコードのリストを含むBlueprintデータテーブル。- Blueprintデータテーブル:
/Content/ByteWars/Settings/DT_GameStats.uasset
- Blueprintデータテーブル:
統計データプロファイルウィジェット
統計データプロファイルウィジェットは、プレイヤーの統計データを表示するメインウィジェットです。以下はW_StatsProfile_Starter Blueprintウィジェットのプレビューです:

このウィジェットはUAccelByteWarsWidgetSwitcherによって制御される複数の状態を持っています。このカスタムウィジェットスイッチャーは、空、読み込み中、エラー、デフォルトの状態を切り替えるのに役立ちます。デフォルト状態は、ウィジェットがプレイヤーの統計データを表示する状態です。
このウィジェットは、ゲームモードに基づいてタブで統計データを表示します: シングルプレイヤー、エリミネーション、チームデスマッチ。統計データリストはDynamic Entry Boxに表示され、各ゲームモードにマッピングされています。
詳細については、Unreal Motion Graphic (UMG) UI DesignerのWidget SwitcherとDynamic Entry Boxのドキュメントを参照してください。
以下は、C++ヘッダーファイルでのウィジェットコンポーネントの宣言です:
private:
// ...
UPROPERTY(BlueprintReadOnly, meta = (BindWidget, BlueprintProtected = true, AllowPrivateAccess = true))
UAccelByteWarsWidgetSwitcher* Ws_Loader;
UPROPERTY(BlueprintReadOnly, meta = (BindWidget, BlueprintProtected = true, AllowPrivateAccess = true))
UDynamicEntryBox* Deb_SinglePlayerStats;
UPROPERTY(BlueprintReadOnly, meta = (BindWidget, BlueprintProtected = true, AllowPrivateAccess = true))
UDynamicEntryBox* Deb_EliminationStats;
UPROPERTY(BlueprintReadOnly, meta = (BindWidget, BlueprintProtected = true, AllowPrivateAccess = true))
UDynamicEntryBox* Deb_TeamDeathmatchStats;
UPROPERTY()
TMap<FName, UDynamicEntryBox*> StatsDataEntryList{};
統計データプロファイルウィジェットエントリー
統計データプロファイルウィジェットエントリーは、プレイヤーの個別の統計データ名と値を表示するウィジェットです。以下はW_StatsProfileEntry Blueprintウィジェットのプレビューです:

以下は、C++ヘッダーファイルでのウィジェットコンポーネントの宣言です:
private:
UPROPERTY(BlueprintReadOnly, meta = (BindWidget, BlueprintProtected = true, AllowPrivateAccess = true))
UTextBlock* Txt_StatName;
UPROPERTY(BlueprintReadOnly, meta = (BindWidget, BlueprintProtected = true, AllowPrivateAccess = true))
UTextBlock* Txt_StatValue;
統計データテーブル
Byte Warsには、各ゲームモードに保存する複数の統計データがあります。それらを整理するために、DT_GameStatsという名前のデータテーブルを使用して統計データコードを保存しています。これらの統計データコードを使用して、後でAccelByte Gaming Services (AGS)内の統計データ値を操作します。

Byte Warsには多くの統計データがありますが、簡潔にするため、このモジュールではプレイヤーの最高スコアの統計データの設定のみを扱います。
UIの準備
このセクションでは、前述のウィジェットを準備して、統計データの統合を開始します。
-
StatsProfileWidget_Starterヘッダーファイルを開き、以下の関数を宣言します:protected:
// ...
UFUNCTION()
void QueryLocalUserStats();
void OnQueryLocalUserStatsComplete(const FOnlineError& ResultState, const TArray<TSharedRef<const FOnlineStatsUserStats>>& UsersStatsResult); -
次に、
StatsProfileWidget_StarterCPPファイルを開き、QueryLocalUserStats()関数を定義します。この関数は、後で作成する統計データサブシステムを通じてプレイヤーの統計データリストをクエリします。今のところ、以下のようにダミーログで定義します:void UStatsProfileWidget_Starter::QueryLocalUserStats()
{
// ...
} -
OnQueryLocalUserStatsComplete()関数を定義します。この関数は、クエリプロセスが完了した後に統計データリストを表示するコールバック関数です。今のところ、以下のようにダミーログで定義します:void UStatsProfileWidget_Starter::OnQueryLocalUserStatsComplete(
const FOnlineError& ResultState,
const TArray<TSharedRef<const FOnlineStatsUserStats>>& UsersStatsResult)
{
// ...
} -
次に、
NativeOnActivated()関数を見つけて、以下のコードに置き換えます。この関数では、ゲームモードに基づいてDynamic Entry Boxをマッピングします。このマップは、後で統計データリストを表示するために使用します。次に、統計データリストのクエリを再試行するボタンアクションをバインドします。そして、ウィジェットが表示されたときに統計データリストをクエリするためにQueryLocalUserStats()を呼び出します。void UStatsProfileWidget_Starter::NativeOnActivated()
{
Super::NativeOnActivated();
StatsDataEntryList.Empty();
StatsDataEntryList.Add(GAMESTATS_GameModeSinglePlayer, Deb_SinglePlayerStats);
StatsDataEntryList.Add(GAMESTATS_GameModeElimination, Deb_EliminationStats);
StatsDataEntryList.Add(GAMESTATS_GameModeTeamDeathmatch, Deb_TeamDeathmatchStats);
Btn_Back->OnClicked().AddUObject(this, &ThisClass::DeactivateWidget);
Ws_Loader->OnRetryClicked.AddUObject(this, &ThisClass::QueryLocalUserStats);
QueryLocalUserStats();
} -
プロジェクトをビルドし、Unreal Engineエディターで開きます。エディターで
/Content/TutorialModules/Storage/StatisticsEssentials/DA_StatsEssentialsを開き、Is Starter Mode Activeを有効にします。次に、アセットを保存します。 -
エディターでゲームをプレイし、ログインしてProfile > Statsに移動します。空の統計データリストを持つ統計データプロファイルウィジェットが表示されます。
リソース
- このチュートリアルで使用されるファイル
- AccelByteWars/Content/TutorialModules/Storage/StatisticsEssentials/UI/W_StatsProfile_Starter.uasset
- AccelByteWars/Source/AccelByteWars/TutorialModules/Storage/StatisticsEssentials/UI/StatsProfileWidget_Starter.h
- AccelByteWars/Source/AccelByteWars/TutorialModules/Storage/StatisticsEssentials/UI/StatsProfileWidget_Starter.cpp
- AccelByteWars/Content/TutorialModules/Storage/StatisticsEssentials/UI/Components/W_StatsProfileEntry.uasset
- AccelByteWars/Source/AccelByteWars/TutorialModules/Storage/StatisticsEssentials/UI/Components/StatsProfileWidgetEntry.h
- AccelByteWars/Source/AccelByteWars/TutorialModules/Storage/StatisticsEssentials/UI/Components/StatsProfileWidgetEntry.cpp
- AccelByteWars/Content/ByteWars/Settings/DT_GameStats.uasset