すべてを統合する - フレンドを管理する - (Unreal Engine モジュール)
Last updated on February 4, 2026
注釈:本資料はAI技術を用いて翻訳されています。
ブロックされたプレイヤーを取得するためにUIを接続する
-
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);
}
}
));
} -
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();
} -
NativeOnDeactivated()に以下のコードを追加します。基本的に、ウィジェットが閉じられるとブロックされたプレイヤーリストの変更のリスニングを停止します。void UBlockedPlayersWidget_Starter::NativeOnDeactivated()
{
Btn_Back->OnClicked().Clear();
ManagingFriendsSubsystem->UnbindOnCachedBlockedPlayersDataUpdated(GetOwningPlayer());
Super::NativeOnDeactivated();
}
フレンド解除、ブロック、ブロック解除のためにUIを接続する
-
まずフレンドの解除から始めます。
ManagingFriendsSubsystem_Starterクラスの CPP ファイルを開きます。以下の関数で、既存の実装を次のように置き換えます。void UManagingFriendsSubsystem_Starter::OnUnfriendButtonClicked(const APlayerController* PC, const FUniqueNetIdRepl FriendUserId, const FOnUnfriendComplete& OnComplete)
{
Unfriend(PC, FriendUserId, OnComplete);
} -
同じファイル内で、プレイヤーをブロックするために
OnBlockButtonClickedの既存の実装を次のように置き換えます。void UManagingFriendsSubsystem_Starter::OnBlockButtonClicked(const APlayerController* PC, const FUniqueNetIdRepl BlockedPlayerUserId, const FOnBlockPlayerComplete& OnComplete)
{
BlockPlayer(PC, BlockedPlayerUserId, OnComplete);
} -
BlockedPlayerWidgetEntry_Starterクラスの CPP ファイルを開きます。プレイヤーのブロックを解除するために、OnUnblockButtonClickedの既存の実装を次のように置き換えます。void UBlockedPlayerWidgetEntry_Starter::OnUnblockButtonClicked()
{
ensure(CachedBlockedPlayerData);
ensure(ManagingFriendsSubsystem);
ManagingFriendsSubsystem->UnblockPlayer(GetOwningPlayer(), CachedBlockedPlayerData->UserId);
}
リソース
- このチュートリアルセクションで使用されているファイルは、Unreal Byte Wars GitHub リポジトリで入手できます。
- AccelByteWars/Source/AccelByteWars/TutorialModules/Social/ManagingFriends/UI/BlockedPlayersWidget_Starter.h
- AccelByteWars/Source/AccelByteWars/TutorialModules/Social/ManagingFriends/UI/BlockedPlayersWidget_Starter.cpp
- AccelByteWars/Source/AccelByteWars/TutorialModules/Social/ManagingFriends/UI/BlockedPlayerWidgetEntry_Starter.h
- AccelByteWars/Source/AccelByteWars/TutorialModules/Social/ManagingFriends/UI/BlockedPlayerWidgetEntry_Starter.cpp
- AccelByteWars/Source/AccelByteWars/TutorialModules/Social/ManagingFriends/ManagingFriendsSubsystem_Starter.cpp