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

すべてを統合する - フレンドを追加する - (Unreal Engine モジュール)

Last updated on February 4, 2026

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

受信したリクエストを取得するために UI を接続する

  1. FriendRequestsWidget_Starter クラスの CPP ファイルを開き、GetFriendRequestList() 関数に移動して、現在の実装を以下のコードに置き換えます。これは FriendsSubsystem_Starter サブシステムを使用して受信したフレンドリクエストリストを取得し、完了時に表示します。

    void UFriendRequestsWidget_Starter::GetFriendRequestList()
    {
    ensure(FriendsSubsystem);

    Ws_FriendRequests->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Loading);

    FriendsSubsystem->GetInboundFriendRequestList(
    GetOwningPlayer(),
    FOnGetInboundFriendRequestListComplete::CreateWeakLambda(this, [this](bool bWasSuccessful, TArray<UFriendData*> FriendRequests, const FString& ErrorMessage)
    {
    Lv_FriendRequests->ClearListItems();

    if (bWasSuccessful)
    {
    Lv_FriendRequests->SetListItems(FriendRequests);
    Ws_FriendRequests->SetWidgetState(FriendRequests.IsEmpty() ?
    EAccelByteWarsWidgetSwitcherState::Empty :
    EAccelByteWarsWidgetSwitcherState::Not_Empty);
    }
    else
    {
    Ws_FriendRequests->ErrorMessage = FText::FromString(ErrorMessage);
    Ws_FriendRequests->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Error);
    }
    }
    ));
    }
  2. NativeOnActivated() 関数を以下のコードに置き換えます。これは GetFriendRequestList() 関数を OnCachedFriendsDataUpdated にバインドし、実際のリストが変更されるとすぐに表示されるリストを更新します。

    void UFriendRequestsWidget_Starter::NativeOnActivated()
    {
    Super::NativeOnActivated();

    Btn_Back->OnClicked().AddUObject(this, &ThisClass::DeactivateWidget);

    // Reset widgets.
    Ws_FriendRequests->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Empty);
    Lv_FriendRequests->ClearListItems();

    FriendsSubsystem->BindOnCachedFriendsDataUpdated(GetOwningPlayer(), FOnCachedFriendsDataUpdated::CreateUObject(this, &ThisClass::GetFriendRequestList));
    GetFriendRequestList();
    }
  3. NativeOnDeactivated() に以下のコードを追加します。基本的に、ウィジェットが閉じられると、受信したフレンドリクエストリストの変更の監視を停止します。

    void UFriendRequestsWidget_Starter::NativeOnDeactivated()
    {
    Btn_Back->OnClicked().Clear();

    FriendsSubsystem->UnbindOnCachedFriendsDataUpdated(GetOwningPlayer());

    Super::NativeOnDeactivated();
    }

送信したリクエストを取得するために UI を接続する

  1. SentFriendRequestsWidget_Starter クラスの CPP ファイルを開き、GetSentFriendRequestList() 関数に移動して、現在の実装を以下のコードに置き換えます。これは FriendsSubsystem_Starter サブシステムを使用して送信したフレンドリクエストリストを取得し、完了時に表示します。

    void USentFriendRequestsWidget_Starter::GetSentFriendRequestList()
    {
    ensure(FriendsSubsystem);

    Ws_FriendRequests->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Loading);

    FriendsSubsystem->GetOutboundFriendRequestList(
    GetOwningPlayer(),
    FOnGetOutboundFriendRequestListComplete::CreateWeakLambda(this, [this](bool bWasSuccessful, TArray<UFriendData*> FriendRequests, const FString& ErrorMessage)
    {
    Lv_FriendRequests->ClearListItems();

    if (bWasSuccessful)
    {
    Lv_FriendRequests->SetListItems(FriendRequests);
    Ws_FriendRequests->SetWidgetState(FriendRequests.IsEmpty() ?
    EAccelByteWarsWidgetSwitcherState::Empty :
    EAccelByteWarsWidgetSwitcherState::Not_Empty);
    }
    else
    {
    Ws_FriendRequests->ErrorMessage = FText::FromString(ErrorMessage);
    Ws_FriendRequests->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Error);
    }
    }
    ));
    }
  2. NativeOnActivated() に以下のコードを追加します。これは GetSentFriendRequestList() 関数を OnCachedFriendsDataUpdated にバインドし、実際のリストが変更されるとすぐに表示されるリストを更新します。

    void USentFriendRequestsWidget_Starter::NativeOnActivated()
    {
    Super::NativeOnActivated();

    Btn_Back->OnClicked().AddUObject(this, &ThisClass::DeactivateWidget);

    // Reset widgets.
    Ws_FriendRequests->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Empty);
    Lv_FriendRequests->ClearListItems();

    FriendsSubsystem->BindOnCachedFriendsDataUpdated(GetOwningPlayer(), FOnCachedFriendsDataUpdated::CreateUObject(this, &ThisClass::GetSentFriendRequestList));
    GetSentFriendRequestList();
    }
  3. NativeOnDeactivated() に以下のコードを追加します。基本的に、ウィジェットが閉じられると、送信したフレンドリクエストリストの変更の監視を停止します。

    void USentFriendRequestsWidget_Starter::NativeOnDeactivated()
    {
    Btn_Back->OnClicked().Clear();

    FriendsSubsystem->UnbindOnCachedFriendsDataUpdated(GetOwningPlayer());

    Super::NativeOnDeactivated();
    }

リクエストを承認、拒否、キャンセルするために UI を接続する

  1. まず、フレンドリクエストの承認から始めます。FriendWidgetEntry_Starter クラスの CPP ファイルを開き、OnAcceptButtonClicked() 関数に移動して、現在の実装を以下のコードに置き換えます。

    void UFriendWidgetEntry_Starter::OnAcceptButtonClicked()
    {
    ensure(CachedFriendData);
    ensure(FriendsSubsystem);

    FriendsSubsystem->AcceptFriendRequest(GetOwningPlayer(), CachedFriendData->UserId);
    }
  2. 同じファイル内で、OnRejectButtonClicked() 関数に移動し、現在の実装を以下のコードに置き換えます。

    void UFriendWidgetEntry_Starter::OnRejectButtonClicked()
    {
    ensure(CachedFriendData);
    ensure(FriendsSubsystem);

    FriendsSubsystem->RejectFriendRequest(GetOwningPlayer(), CachedFriendData->UserId);
    }
  3. OnCancelButtonClicked() 関数に移動し、フレンドリクエストをキャンセルするために現在の実装を以下のコードに置き換えます。

    void UFriendWidgetEntry_Starter::OnCancelButtonClicked()
    {
    ensure(CachedFriendData);
    ensure(FriendsSubsystem);

    // Cancel friend request is the same as removing a friend.
    FriendsSubsystem->CancelFriendRequest(GetOwningPlayer(), CachedFriendData->UserId);
    }

リソース