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

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

Last updated on February 4, 2026

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

フレンドリストを取得するためにUIを接続する

  1. FriendsWidget_Starter クラスの CPP ファイルを開き、GetFriendList() 関数に移動して、現在の実装を以下のコードに置き換えます。これにより、FriendsSubsystem_Starter を使用してフレンドリストを取得し、完了時に表示します。

    void UFriendsWidget_Starter::GetFriendList()
    {
    ensure(FriendsSubsystem);

    Ws_Friends->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Loading);

    FriendsSubsystem->GetFriendList(
    GetOwningPlayer(),
    FOnGetFriendListComplete::CreateWeakLambda(this, [this](bool bWasSuccessful, TArray<UFriendData*> Friends, const FString& ErrorMessage)
    {
    Tv_Friends->ClearListItems();

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

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

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

    // Reset widgets.
    Ws_Friends->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Empty);
    Tv_Friends->ClearListItems();

    Tv_Friends->OnItemClicked().AddUObject(this, &ThisClass::OnFriendEntryClicked);

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

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

    Tv_Friends->OnItemClicked().Clear();

    FriendsSubsystem->UnbindOnCachedFriendsDataUpdated(GetOwningPlayer());

    Super::NativeOnDeactivated();
    }

リソース