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

すべてをまとめる - デバイスIDでログイン - (Unreal Engine モジュール)

Last updated on February 4, 2026

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

UIを接続してプレイヤーがデバイスIDでログインできるようにする

このチュートリアルでは、前のセクションで作成したログイン実装とログインメニューウィジェットを接続する方法を学びます。

以下のスニペットコードに示すように、LoginWidget_Starter クラスの CPP ファイルの NativeConstruct() 関数内に、AuthEssentialsSubsystem_Starter への参照をすでに用意しています。

void ULoginWidget_Starter::NativeConstruct()
{
Super::NativeConstruct();

GameInstance = Cast<UAccelByteWarsGameInstance>(GetGameInstance());
ensure(GameInstance);

AuthSubsystem = GameInstance->GetSubsystem<UAuthEssentialsSubsystem_Starter>();
ensure(AuthSubsystem);

PromptSubsystem = GameInstance->GetSubsystem<UPromptSubsystem>();
ensure(PromptSubsystem);

SetLoginState(ELoginState::Default);
OnRetryLoginDelegate.Clear();
}

ログインプロセスが完了したときにリッスンするコールバック関数を設定し、ログイン認証情報を設定して、ログインリクエストを送信します。

  1. 宣言はすでに行われているため、LoginWidget_Starter CPP ファイルに直接移動し、OnLoginComplete() に移動します。この関数は、ログインプロセスが完了したときのコールバックになります。この関数は、ログイン成功時にメインメニューウィジェットを表示するか、ログイン失敗時にエラーメッセージを表示します。

    void ULoginWidget_Starter::OnLoginComplete(bool bWasSuccessful, const FString& ErrorMessage)
    {
    if (bWasSuccessful)
    {
    // Broadcast on-login success event.
    if (UAuthEssentialsModels::OnLoginSuccessDelegate.IsBound())
    {
    UAuthEssentialsModels::OnLoginSuccessDelegate.Broadcast(GetOwningPlayer());
    }

    // When login success, open Main Menu widget.
    OpenMainMenu();
    }
    else
    {
    // When login failed, show error message.
    Tb_FailedMessage->SetText(FText::FromString(ErrorMessage));
    SetLoginState(ELoginState::Failed);
    }
    }
  2. これで、ログインリクエストの送信を開始できます。引き続き CPP ファイルで、OnLoginWithDeviceIdButtonClicked() に移動し、既存の実装を次のように置き換えます。

    void ULoginWidget_Starter::OnLoginWithDeviceIdButtonClicked()
    {
    SetLoginState(ELoginState::LoggingIn);
    OnRetryLoginDelegate.AddUObject(this, &ThisClass::OnLoginWithDeviceIdButtonClicked);

    APlayerController* PC = GetWorld()->GetFirstPlayerController();
    ensure(PC);

    ensure(AuthSubsystem);
    AuthSubsystem->SetAuthCredentials(EAccelByteLoginType::DeviceId, TEXT(""), TEXT(""));
    AuthSubsystem->Login(PC, FAuthOnLoginCompleteDelegate::CreateUObject(this, &ThisClass::OnLoginComplete));
    }
  3. プロジェクトをコンパイルし、エラーがないことを確認します。