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

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

Last updated on February 4, 2026

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

ブロックされたプレイヤーを取得するためにUIを接続する

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

    void UBlockedPlayersWidget_Starter::GetBlockedPlayerList()
    {
    ensure(ManagingFriendsSubsystem);

    Ws_BlockedPlayers->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Loading);

    ManagingFriendsSubsystem->GetBlockedPlayerList(
    GetOwningPlayer(),
    true,
    FOnGetBlockedPlayerListComplete::CreateWeakLambda(this, [this](bool bWasSuccessful, TArray<UFriendData*> BlockedPlayers, const FString& ErrorMessage)
    {
    Lv_BlockedPlayers->ClearListItems();

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

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

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

    // Reset widgets.
    Ws_BlockedPlayers->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Empty);
    Lv_BlockedPlayers->ClearListItems();

    ManagingFriendsSubsystem->BindOnCachedBlockedPlayersDataUpdated(GetOwningPlayer(), FOnGetCacheBlockedPlayersDataUpdated::CreateUObject(this, &ThisClass::GetBlockedPlayerList));
    GetBlockedPlayerList();
    }
  3. NativeOnDeactivated() に以下のコードを追加します。基本的に、ウィジェットが閉じられるとブロックされたプレイヤーリストの変更のリスニングを停止します。

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

    ManagingFriendsSubsystem->UnbindOnCachedBlockedPlayersDataUpdated(GetOwningPlayer());

    Super::NativeOnDeactivated();
    }

フレンド解除、ブロック、ブロック解除のためにUIを接続する

  1. まずフレンドの解除から始めます。ManagingFriendsSubsystem_Starter クラスの CPP ファイルを開きます。以下の関数で、既存の実装を次のように置き換えます。

    void UManagingFriendsSubsystem_Starter::OnUnfriendButtonClicked(const APlayerController* PC, const FUniqueNetIdRepl FriendUserId, const FOnUnfriendComplete& OnComplete)
    {
    Unfriend(PC, FriendUserId, OnComplete);
    }
  2. 同じファイル内で、プレイヤーをブロックするために OnBlockButtonClicked の既存の実装を次のように置き換えます。

    void UManagingFriendsSubsystem_Starter::OnBlockButtonClicked(const APlayerController* PC, const FUniqueNetIdRepl BlockedPlayerUserId, const FOnBlockPlayerComplete& OnComplete)
    {
    BlockPlayer(PC, BlockedPlayerUserId, OnComplete);
    }
  3. BlockedPlayerWidgetEntry_Starter クラスの CPP ファイルを開きます。プレイヤーのブロックを解除するために、OnUnblockButtonClicked の既存の実装を次のように置き換えます。

    void UBlockedPlayerWidgetEntry_Starter::OnUnblockButtonClicked()
    {
    ensure(CachedBlockedPlayerData);
    ensure(ManagingFriendsSubsystem);

    ManagingFriendsSubsystem->UnblockPlayer(GetOwningPlayer(), CachedBlockedPlayerData->UserId);
    }

リソース