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

ログインメニューを追加する - シングルプラットフォーム認証でログイン - (Unreal Engine モジュール)

Last updated on February 4, 2026

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

メニューの内容

このチュートリアルでは、シングルプラットフォーム認証ログインを実行するために必要なウィジェットの準備方法を学びます。 関連ファイルはリソースセクションで入手でき、以下のコンポーネントで構成されています。

  • SinglePlatformAuthWidget_Starter、ウィジェットのインタラクションを処理するロジックを含むC++クラス。
    • Header ファイル: /Source/AccelByteWars/TutorialModules/Access/SinglePlatformAuth/UI/SinglePlatformAuthWidget_Starter.h
    • Source ファイル: /Source/AccelByteWars/TutorialModules/Access/SinglePlatformAuth/UI/SinglePlatformAuthWidget_Starter.cpp
  • W_SinglePlatformAuthWidget_Starter、Unreal Motion Graphics (UMG) を通じて作成されたブループリントウィジェットで、SinglePlatformAuthWidget_Starter クラスの子孫です。
    • Widget Blueprint ファイル: /Content/TutorialModules/Access/SinglePlatformAuth/UI/W_SinglePlatformAuthWidget_Starter.uasset

Unreal Editor で W_SinglePlatformAuthWidget_Starter ウィジェットを直接表示するには、Content Browser でブループリントファイルの場所に移動してダブルクリックします。以下のように、Hierarchy パネルに Btn_LoginWithSinglePlatformAuth ボタンが表示されます。

Single platform auth login widget button

Btn_LoginWithSinglePlatformAuth ボタンはシングルプラットフォーム認証ログインを実行するために使用され、そのインタラクションは SinglePlatformAuthWidget_Starter クラスで処理されます。ボタンがクリックされると、以下の関数が呼び出されます。

private:
void OnLoginWithSinglePlatformAuthButtonClicked();

上記のウィジェットを、デバイスIDでログインモジュールで実装された既存のログインメニューに追加します。これにより、ウィジェットは AuthEssentials モジュールに依存することになります。その結果、SinglePlatformAuthWidget_Starter クラスは、以下のコードスニペットを通じて AuthEssentials モジュールのスターターモードがアクティブかどうかを確認する必要があります。スターターモードが非アクティブの場合、ボタンは非表示になります。このロジックは NativeOnActivated() 関数の開始部分で確認できます。このチュートリアルを進めるには、AuthEssentials のスターターモードがアクティブであることを確認してください。

NativeConstruct() 関数で AuthEssentials モジュールへのすべての参照を提供しているため、すぐに使用できます。

以下のコードスニペットを使用すると、AuthEssentials モジュール設定で bAutoLogin フラグが true に設定されているかどうかを確認できます。設定されている場合、ゲームは起動時にシングルプラットフォーム認証で自動的にログインを試みます。これは、コマンドライン引数に -bAutoLogin=true フラグが設定されているかどうかも確認します。

bool USinglePlatformAuthWidget_Starter::ShouldAutoLogin()
{
bool bAutoLogin = false;
const FString AutoLoginKey = "bAutoLogin";
GConfig->GetBool(AUTH_ESSENTIALS_SECTION, *AutoLoginKey, bAutoLogin, GEngineIni);
FParse::Bool(FCommandLine::Get(), *FString::Printf(TEXT("-%s="), *AutoLoginKey), bAutoLogin);
return bAutoLogin;
}

以下のコードスニペットを使用すると、SinglePlatformAuth モジュール設定で bAllowDeviceIdLogin フラグが true に設定されているかどうかを確認できます。有効になっている場合、ゲームはデバイスIDログインオプションを表示します。これは、コマンドライン引数に -bAllowDeviceIdLogin=true フラグが設定されているかどうかも確認します。

bool USinglePlatformAuthWidget_Starter::ShouldDisplayDeviceIdLogin()
{
bool bAllowDeviceIdLogin = false;
const FString AllowDeviceIdLoginKey = "bAllowDeviceIdLogin";
GConfig->GetBool(SINGLE_PLATFORM_AUTH_SECTION, *AllowDeviceIdLoginKey, bAllowDeviceIdLogin, GEngineIni);
FParse::Bool(FCommandLine::Get(), *FString::Printf(TEXT("-%s="), *AllowDeviceIdLoginKey), bAllowDeviceIdLogin);
return bAllowDeviceIdLogin;
}

以下のコードスニペットを使用すると、DefaultEngine.ini ファイルの OnlineSubsystem セクションからデフォルトのネイティブプラットフォームを取得できます。これは、ログインプロセスに使用するデフォルトのネイティブプラットフォームを決定するために使用されます。

FString USinglePlatformAuthWidget_Starter::GetDefaultNativePlatform()
{
FString DefaultNativePlatform;
const FString OnlineSubsystemSection = "OnlineSubsystem";
const FString NativePlatformKey = "NativePlatformService";
GConfig->GetString(*OnlineSubsystemSection, *NativePlatformKey, DefaultNativePlatform, GEngineIni);
return DefaultNativePlatform;
}

UIの準備

以前、デバイスIDでログインモジュールで、進行中、失敗、成功などの完全なログイン状態を備えた W_Login_Starter というログインメニューウィジェットを実装しました。

W_Login_Starter ウィジェットを利用することで、W_SinglePlatformAuthWidget_Starter ウィジェットをログインメニューに追加します。これにより、ユーザーはシングルプラットフォーム認証でログインでき、同じログインメニューにログイン状態が表示されます。

  1. SinglePlatformAuthWidget_Starter C++クラスを開き、NativeOnActivated() 関数に移動して、以下のハイライトされたコードを追加します。これにより、OnLoginWithSinglePlatformAuthButtonClicked() 関数が Btn_LoginWithSinglePlatformAuth ボタンにバインドされます。

    void USinglePlatformAuthWidget_Starter::NativeOnActivated()
    {
    // ...
    const bool bIsNativePlatformValid = IOnlineSubsystem::GetByPlatform() != nullptr;
    if (!bIsNativePlatformValid)
    {
    Btn_LoginWithSinglePlatformAuth->SetVisibility(ESlateVisibility::Collapsed);
    return;
    }
    // ...
    Btn_LoginWithSinglePlatformAuth->OnClicked().AddUObject(this, &ThisClass::OnLoginWithSinglePlatformAuthButtonClicked);
    // ...
    }
  2. OnLoginWithSinglePlatformAuthButtonClicked() 関数に移動し、既存のコードを以下のコードに置き換えます。これにより、ログイン状態が LoggingIn に設定され、OnRetryLoginDelegateOnLoginWithSinglePlatformAuthButtonClicked() 関数にバインドされ、ログインプロセスが失敗した場合にユーザーが再試行できるようになります。

    void USinglePlatformAuthWidget_Starter::OnLoginWithSinglePlatformAuthButtonClicked()
    {
    // Set the login widget to logging in state and bind the retry login delegate.
    LoginWidget->SetLoginState(ELoginState::LoggingIn);
    LoginWidget->OnRetryLoginDelegate.AddUObject(this, &ThisClass::OnLoginWithSinglePlatformAuthButtonClicked);
    // ...
    }
  3. コードをコンパイルし、Unreal Editor でプロジェクトを開きます。Content Browser で、TutorialModules/Access/SinglePlatformAuth/ ディレクトリに移動し、DA_SinglePlatformAuth を開きます。Is Starter Mode Active フラグを true に設定し、アセットを保存します。

  4. Unreal Editor でゲームをプレイしてウィジェットを確認します。W_Login_Starter ウィジェットに Login with Single Platform Auth ボタンが表示されているはずです。

シングルプラットフォーム認証での自動ログインの実装

このセクションでは、起動時にシングルプラットフォーム認証で自動ログインを実装する方法を説明します。

  1. Config フォルダ内にある DefaultEngine.ini ファイルで、/ByteWars/TutorialModule.AuthEssentials セクションの下にある bAutoLogin フラグを見つけ、true に設定して AuthEssentials モジュールで自動ログインを有効にします。

    [/ByteWars/TutorialModule.AuthEssentials]
    bAutoLogin=true
  2. SinglePlatformAuthWidget_Starter C++クラスを開き、NativeOnActivated() に以下のハイライトされたコードスニペットを追加して、bAutoLogin フラグが true に設定されているかどうかを確認します。設定されている場合、起動時にシングルプラットフォーム認証で自動的にログインするために OnLoginWithSinglePlatformAuthButtonClicked 関数を直接呼び出します。

    void USinglePlatformAuthWidget_Starter::NativeOnActivated()
    {
    // ...
    const bool bIsNativePlatformValid = IOnlineSubsystem::GetByPlatform() != nullptr;
    if (!bIsNativePlatformValid)
    {
    Btn_LoginWithSinglePlatformAuth->SetVisibility(ESlateVisibility::Collapsed);
    return;
    }

    if (ShouldAutoLogin())
    {
    OnLoginWithSinglePlatformAuthButtonClicked();
    return;
    }
    // ...
    Btn_LoginWithSinglePlatformAuth->OnClicked().AddUObject(this, &ThisClass::OnLoginWithSinglePlatformAuthButtonClicked);
    // ...
    }
  3. コードをコンパイルし、エラーがないことを確認します。

デバイスIDログインボタンの表示の実装

このセクションでは、Single Platform Auth モジュールがアクティブなときにデバイスIDログインボタンの表示を切り替える方法を示します。これにより、開発者は好みに応じてデバイスIDログインオプションを有効または無効にできます。

  1. DefaultEngine.ini ファイルで、[/ByteWars/TutorialModule.SinglePlatformAuth] セクションの下にある bAllowDeviceIdLogin フラグを見つけ、値を true に設定してデバイスIDログインオプションを有効にします。

    [/ByteWars/TutorialModule.SinglePlatformAuth]
    bAllowDeviceIdLogin=true
  2. SinglePlatformAuthWidget_Starter C++クラスを開き、NativeOnActivated() に以下のハイライトされたコードスニペットを追加します。このコードは、bAllowDeviceIdLogin フラグが true に設定されている場合はデバイスIDログインボタンを表示し、設定されていない場合はボタンを非表示にします。

    void USinglePlatformAuthWidget_Starter::NativeOnActivated()
    {
    // ...
    Btn_LoginWithSinglePlatformAuth->OnClicked().AddUObject(this, &ThisClass::OnLoginWithSinglePlatformAuthButtonClicked);
    LoginWidget->SetButtonLoginVisibility(ShouldDisplayDeviceIdLogin() ? ESlateVisibility::Visible : ESlateVisibility::Collapsed);
    }
  3. コードをコンパイルし、エラーがないことを確認します。

適応型ログインボタンテキストの実装

このセクションでは、DefaultEngine.ini ファイルに設定されたネイティブプラットフォーム名にログインボタンのテキストを変更する方法を示します。これにより、ユーザーはどのプラットフォームでログインしているかを知ることができます。

  1. SinglePlatformAuthWidget_Starter C++クラスを開き、NativeOnActivated() に以下のハイライトされたコードスニペットを追加します。このコードは、DefaultEngine.ini ファイルに設定されたネイティブプラットフォーム名にログインボタンのテキストを変更します。

    void USinglePlatformAuthWidget_Starter::NativeOnActivated()
    {
    // ...
    if (ShouldAutoLogin())
    {
    OnLoginWithSinglePlatformAuthButtonClicked();
    return;
    }

    const FString LoginButtonText = TEXT_LOGIN_WITH.ToString().Replace(TEXT("%PLATFORM%"), *GetDefaultNativePlatform());
    Btn_LoginWithSinglePlatformAuth->SetButtonText(FText::FromString(LoginButtonText));
    // ...
    }
  2. コードをコンパイルし、エラーがないことを確認します。

リソース