ログインメニューを追加する - シングルプラットフォーム認証でログイン - (Unreal Engine モジュール)
注釈:本資料はAI技術を用いて翻訳されています。
メニューの内容
このチュートリアルでは、シングルプラットフォーム認証ログインを実行するために必要なウィジェットの準備方法を学びます。 関連ファイルはリソースセクションで入手でき、以下のコンポーネントで構成されています。
SinglePlatformAuthWidget_Starter、ウィジェットのインタラクションを処理するロジックを含むC++クラス。- Header ファイル:
/Source/AccelByteWars/TutorialModules/Access/SinglePlatformAuth/UI/SinglePlatformAuthWidget_Starter.h - Source ファイル:
/Source/AccelByteWars/TutorialModules/Access/SinglePlatformAuth/UI/SinglePlatformAuthWidget_Starter.cpp
- Header ファイル:
W_SinglePlatformAuthWidget_Starter、Unreal Motion Graphics (UMG) を通じて作成されたブループリントウィジェットで、SinglePlatformAuthWidget_Starterクラスの子孫です。- Widget Blueprint ファイル:
/Content/TutorialModules/Access/SinglePlatformAuth/UI/W_SinglePlatformAuthWidget_Starter.uasset
- Widget Blueprint ファイル:
Unreal Editor で W_SinglePlatformAuthWidget_Starter ウィジェットを直接表示するには、Content Browser でブループリントファイルの場所に移動してダブルクリックします。以下のように、Hierarchy パネルに Btn_LoginWithSinglePlatformAuth ボタンが表示されます。

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 ウィジェットをログインメニューに追加します。これにより、ユーザーはシングルプラットフォーム認証でログインでき、同じログインメニューにログイン状態が表示されます。
-
SinglePlatformAuthWidget_StarterC++クラスを開き、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);
// ...
} -
OnLoginWithSinglePlatformAuthButtonClicked()関数に移動し、既存のコードを以下のコードに置き換えます。これにより、ログイン状態がLoggingInに設定され、OnRetryLoginDelegateがOnLoginWithSinglePlatformAuthButtonClicked()関数にバインドされ、ログインプロセスが失敗した場合にユーザーが再試行できるようになります。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);
// ...
} -
コードをコンパイルし、Unreal Editor でプロジェクトを開きます。Content Browser で、
TutorialModules/Access/SinglePlatformAuth/ディレクトリに移動し、DA_SinglePlatformAuthを開きます。Is Starter Mode Activeフラグをtrueに設定し、アセットを保存します。 -
Unreal Editor でゲームをプレイしてウィジェットを確認します。
W_Login_StarterウィジェットにLogin with Single Platform Authボタンが表示されているはずです。
シングルプラットフォーム認証での自動ログインの実装
このセクションでは、起動時にシングルプラットフォーム認証で自動ログインを実装する方法を説明します。
-
Configフォルダ内にあるDefaultEngine.iniファイルで、/ByteWars/TutorialModule.AuthEssentialsセクションの下にあるbAutoLoginフラグを見つけ、trueに設定してAuthEssentialsモジュールで自動ログインを有効にします。[/ByteWars/TutorialModule.AuthEssentials]
bAutoLogin=true -
SinglePlatformAuthWidget_StarterC++クラスを開き、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);
// ...
} -
コードをコンパイルし、エラーがないことを確認します。
デバイスIDログインボタンの表示の実装
このセクションでは、Single Platform Auth モジュールがアクティブなときにデバイスIDログインボタンの表示を切り替える方法を示します。これにより、開発者は好みに応じてデバイスIDログインオプションを有効または無効にできます。
-
DefaultEngine.iniファイルで、[/ByteWars/TutorialModule.SinglePlatformAuth]セクションの下にあるbAllowDeviceIdLoginフラグを見つけ、値をtrueに設定してデバイスIDログインオプションを有効にします。[/ByteWars/TutorialModule.SinglePlatformAuth]
bAllowDeviceIdLogin=true -
SinglePlatformAuthWidget_StarterC++クラスを開き、NativeOnActivated()に以下のハイライトされたコードスニペットを追加します。このコードは、bAllowDeviceIdLoginフラグが true に設定されている場合はデバイスIDログインボタンを表示し、設定されていない場合はボタンを非表示にします。void USinglePlatformAuthWidget_Starter::NativeOnActivated()
{
// ...
Btn_LoginWithSinglePlatformAuth->OnClicked().AddUObject(this, &ThisClass::OnLoginWithSinglePlatformAuthButtonClicked);
LoginWidget->SetButtonLoginVisibility(ShouldDisplayDeviceIdLogin() ? ESlateVisibility::Visible : ESlateVisibility::Collapsed);
} -
コードをコンパイルし、エラーがないことを確認します。
適応型ログインボタンテキストの実装
このセクションでは、DefaultEngine.ini ファイルに設定されたネイティブプラットフォーム名にログインボタンのテキストを変更する方法を示します。これにより、ユーザーはどのプラットフォームでログインしているかを知ることができます。
-
SinglePlatformAuthWidget_StarterC++クラスを開き、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));
// ...
} -
コードをコンパイルし、エラーがないことを確認します。
リソース
- このチュートリアルセクションで使用されるファイルは、Byte Wars GitHub リポジトリで入手できます。
- AccelByteWars/Source/AccelByteWars/TutorialModules/Access/SinglePlatformAuth/UI/SinglePlatformAuthWidget_Starter.h
- AccelByteWars/Source/AccelByteWars/TutorialModules/Access/SinglePlatformAuth/UI/SinglePlatformAuthWidget_Starter.cpp
- AccelByteWars/Content/TutorialModules/Access/SinglePlatformAuth/UI/W_SinglePlatformAuthWidget_Starter.uasset
- AccelByteWars/Content/TutorialModules/Access/SinglePlatformAuth/DA_SinglePlatformAuth.uasset
- AccelByteWars/Config/DefaultEngine.ini