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

ゲームセッションへの招待 UI - フレンドとプレイする - (Unreal Engine モジュール)

Last updated on February 4, 2026

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

ゲームセッションへの招待 UI について

ゲームセッションへの招待 UI は、Byte Wars のウィジェットで、フレンドリストモジュールのフレンド詳細ウィジェットに付属しています。リソースセクションで利用可能で、ボタンで構成されており、以下のクラスで定義されています:

  • InviteToGameSessionWidget_Starter:実装の大部分が含まれる C++ クラスです。
    • ヘッダーファイル:\Source\AccelByteWars\TutorialModules\Play\PlayingWithFriends\UI\InviteToGameSessionWidget_Starter.h
    • CPP ファイル:\Source\AccelByteWars\TutorialModules\PlayingWithFriends\UI\InviteToGameSessionWidget_Starter.cpp
  • W_InviteToGameSession_Starter:Unreal Motion Graphics(UMG)を使用して作成および設計されたウィジェット Blueprint クラスです。

Preview of the Invite to Game Session UI Unreal Byte Wars play with friends

これらのファイルで準備されている内容を見てみましょう:

  • メニューは Btn_Invite という単一のボタンで構成されています。これはプレイヤーが招待機能をトリガーする場所です。

    private:
    // ...
    UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional, BlueprintProtected = true, AllowPrivateAccess = true))
    UCommonButtonBase* Btn_Invite;
  • メニューはフレンド詳細ウィジェットに付属しているため、そこからキャッシュされたフレンドデータにアクセスする方法が必要です。そこで GetFriendDataFromParentWidget が登場します。この関数を呼び出すだけで、フレンド詳細ウィジェットからキャッシュされたフレンドデータが返されます。

    private:
    // ...
    UFriendData* GetFriendDataFromParentWidget();
  • ヘッダーファイルの FTimerHandle 変数に注目してください。これは、プレイヤーが招待ボタンを連打するのを防ぐための無効化タイマーとして使用されます。

    private:
    // ...
    FTimerHandle InviteDelayTimerHandle;
  • サブシステム変数もあります。これは、後で実装するサブシステムクラスへのポインタです。そのポインタを取得するコードは、NativeOnActivated の下の InviteToGameSessionWidget_Starter にあります。

    private:
    // ...
    UPROPERTY()
    UPlayingWithFriendsSubsystem_Starter* Subsystem;
    void UInviteToGameSessionWidget_Starter::NativeOnActivated()
    {
    // ...
    Subsystem = GetGameInstance()->GetSubsystem<UPlayingWithFriendsSubsystem_Starter>();
    check(Subsystem)
    // ...
    }

ゲームセッションへの招待ウィジェットを準備する

このウィジェットは招待の送信のみを担当し、それ以外は何もしないことを覚えておいてください。招待通知は、後で別の UI システムによって処理されます。

  1. InviteToGameSessionWidget_Starter ヘッダーファイルを開き、以下の宣言を追加します:

    private:
    // ...
    void InviteToSession();
  2. InviteToGameSessionWidget_Starter CPP ファイルを開き、この実装を追加します:

    void UInviteToGameSessionWidget_Starter::InviteToSession()
    {
    const UFriendData* FriendData = GetFriendDataFromParentWidget();
    if (!FriendData)
    {
    return;
    }

    // disable button for 5 seconds to avoid spamming
    Btn_Invite->SetIsEnabled(false);
    GetGameInstance()->GetTimerManager().SetTimer(
    InviteDelayTimerHandle,
    FTimerDelegate::CreateWeakLambda(this, [this]()
    {
    Btn_Invite->SetIsEnabled(true);
    }),
    5.0f,
    false,
    5.0f);
    // ...
    }
  3. 引き続き CPP ファイルで、NativeOnActivated() 関数に移動し、以下のコードを追加します:

    void UInviteToGameSessionWidget_Starter::NativeOnActivated()
    {
    // ...
    Btn_Invite->SetIsEnabled(true);
    Btn_Invite->OnClicked().AddUObject(this, &ThisClass::InviteToSession);
    }
  4. ウィジェットが閉じるときに関数をアンバインドします。CPP ファイルで、NativeOnDeactivated に移動し、以下のコードを追加します:

    void UInviteToGameSessionWidget_Starter::NativeOnDeactivated()
    {
    Btn_Invite->OnClicked().RemoveAll(this);

    if (InviteDelayTimerHandle.IsValid())
    {
    GetGameInstance()->GetTimerManager().ClearTimer(InviteDelayTimerHandle);
    }

    Super::NativeOnDeactivated();
    }
  5. プロジェクトをビルドし、Unreal Editor で開きます。

  6. Unreal Editor で、コンテンツブラウザから Content\TutorialModules\Play\PlayingWithFriends\UI\ に移動し、W_InviteToGameSession_Starter を開きます。Bind Widgets タブですべてのウィジェットが適切にバインドされており、Parent classInviteToGameSessionWidget_Starter に設定されていることを確認してください。

    Bind widgets tab Unreal Byte Wars play with friends

  7. Content\TutorialModules\Play\PlayingWithFriends\DA_PlayingWithFriends.uasset を開き、Is Starter Mode Active を有効にします。データアセットを保存します。

    Data Asset changes preview

  8. エディタでゲームをプレイし、Online Play > Play Online > Create Match Session > Invite Friends に移動します。任意のフレンドをクリックしてから Invite to Match Session をクリックします。正しく実装されていれば、スターター UI が表示されます。

リソース