プレゼンス基本メニューを追加する - プレゼンス基本 - (Unreal Engine モジュール)
注釈:本資料はAI技術を用いて翻訳されています。
メニューの内容
このチュートリアルでは、プレイヤーのプレゼンスを表示するために使用するウィジェットについて学習します。このウィジェットはリソースセクションで入手でき、以下のクラスで定義されています。
PresenceWidget_Starter: 個々のプレイヤーのプレゼンスを表示するために使用するC++クラスです。- ヘッダーファイル:
/Source/AccelByteWars/TutorialModules/Social/PresenceEssentials/UI/PresenceWidget_Starter.h - CPPファイル:
/Source/AccelByteWars/TutorialModules/Social/PresenceEssentials/UI/PresenceWidget_Starter.cpp - Blueprintウィジェット:
/Content/TutorialModules/Social/PresenceEssentials/UI/W_Presence_Starter.uasset
- ヘッダーファイル:
このウィジェットがどのように構築されているかの詳細を見てみましょう。
プレゼンスウィジェット
このウィジェットは、プレイヤーのオンライン状態と最終オンライン状態を示すテキストを表示します。また、プレイヤーが現在どこにいるか(例: メインメニュー、ロビー、マッチ内)や、プレイヤーがパーティーに参加しているかどうかなど、プレイヤーのゲームアクティビティも表示します。以下はW_Presence_Starter Blueprintウィジェットのプレビューです。

以下は、このウィジェットで使用されるUIコンポーネントの宣言です。宣言はPresenceWidget_Starterクラスのヘッダーファイルにあります。
protected:
// ...
UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional, BlueprintProtected = true, AllowPrivateAccess = true))
UCommonTextBlock* Tb_Presence;
UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional, BlueprintProtected = true, AllowPrivateAccess = true))
UThrobber* Th_Loader;
実行時に、ゲームはこのウィジェットをソーシャルメニューのエントリに自動的にアタッチします。これには、フレンドリスト、フレンドリクエストリスト、フレンド詳細メニュー、ブロックプレイヤーリスト、最近のプレイヤーリスト、ゲームセッションメンバーリストが含まれます。アタッチされると、ウィジェットは以下のプロパティを対応するプレイヤーのユーザーIDに割り当てます。例えば、ウィジェットがプレイヤーAのエントリにアタッチされている場合、プレイヤーAのユーザーIDを使用し、プレイヤーBなどにも同様に適用されます。このプロパティは後でプレイヤーのプレゼンスをクエリするために使用できます。プロパティの宣言はPresenceWidget_Starterクラスのヘッダーファイルにあります。
protected:
// ...
FUniqueNetIdPtr PresenceUserId;
UIを準備する
このセクションでは、チュートリアルに沿って進めるためにウィジェットを準備する方法を学習します。
-
PresenceWidget_Starterクラスのヘッダーファイルを開きます。次に、以下の関数を宣言します。protected:
// ...
void RefreshPresence(bool bForceQueryPresence = false); -
次に、
PresenceWidget_StarterクラスのCPPファイルを開き、上記の関数を宣言します。この関数は後で、プレゼンスがクエリまたは更新されるたびにプレイヤーのプレゼンステキストを表示するために使用します。今のところは空のままにしておきます。void UPresenceWidget_Starter::RefreshPresence(bool bForceQueryPresence)
{
// ...
} -
前述のとおり、実行時にプレゼンスウィジェットはソーシャルウィジェットのエントリにアタッチされます。アタッチが完了すると、事前定義された関数
OnSetupPresenceComplete()が呼び出されます。この関数が呼び出されたら、以下のコードを追加してRefreshPresence()関数を呼び出し、プレイヤーのプレゼンスを更新する必要があります。void UPresenceWidget_Starter::OnSetupPresenceComplete()
{
// ...
// Get and display presence.
const AAccelByteWarsGameState* GameState = Cast<AAccelByteWarsGameState>(GetWorld()->GetGameState());
const AAccelByteWarsInGameGameState* InGameGameState = Cast<AAccelByteWarsInGameGameState>(GameState);
bool bForceQueryPresence = InGameGameState != nullptr;
RefreshPresence(bForceQueryPresence);
} -
次に、プロジェクトをビルドし、Unreal Engine Editorで開きます。エディターで
/Content/TutorialModules/Social/PresenceEssentials/に移動し、DA_PresenceEssentialsというデータアセットを見つけます。それを開き、Is Starter Mode Activeを有効にします。次に、データアセットを保存します。この設定により、ゲームをプレイするときに設定したプレゼンスウィジェットがアクティブになります。 -
次に、エディターでゲームを実行し、ログインしてSocialメニューに移動します。次に、フレンドリストやブロックプレイヤーリストなど、任意のソーシャルメニューを開きます。リストエントリにプレゼンスウィジェットがアタッチされていることがわかります。
リソース
-
このチュートリアルセクションで使用されるファイルは、Byte Wars GitHubリポジトリで入手できます。
- AccelByteWars/Content/TutorialModules/Social/PresenceEssentials/UI/W_Presence_Starter.uasset
- AccelByteWars/Source/AccelByteWars/TutorialModules/Social/PresenceEssentials/UI/PresenceWidget_Starter.h
- AccelByteWars/Source/AccelByteWars/TutorialModules/Social/PresenceEssentials/UI/PresenceWidget_Starter.cpp