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

すべてをまとめる - ゲーム内登録 - (Unreal Engine モジュール)

Last updated on February 4, 2026

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

アカウントアップグレード用のUIを接続する

  1. UpgradeAccountOptionWidget_Starter クラスのCPPファイルを開きます。事前定義された NativeConstruct()NativeOnActivated() 関数を見つけます。次に、以下のハイライトされたコードを追加します。このコードは、プレイヤーアカウントがすでにフルアカウントかどうかをチェックします。フルアカウントの場合、アカウントアップグレードオプションメニューをスキップし、代わりにメインメニューにリダイレクトします。

    void UUpgradeAccountOptionWidget_Starter::NativeConstruct()
    {
    Super::NativeConstruct();
    // ...
    SetVisibility(
    !RegisterUserInGameSubsystem->IsAllowUpgradeAccount() ||
    RegisterUserInGameSubsystem->IsCurrentUserIsFullAccount() ?
    ESlateVisibility::Hidden :
    ESlateVisibility::Visible);
    }
    void UUpgradeAccountOptionWidget_Starter::NativeOnActivated()
    {
    if (!RegisterUserInGameSubsystem->IsAllowUpgradeAccount() ||
    RegisterUserInGameSubsystem->IsCurrentUserIsFullAccount())
    {
    SkipUpgradeAccount();
    return;
    }

    Super::NativeOnActivated();

    Btn_Upgrade->OnClicked().AddUObject(this, &ThisClass::ProceedToUpgradeAccount);
    Btn_Skip->OnClicked().AddUObject(this, &ThisClass::SkipUpgradeAccount);
    }
  2. 次に、UpgradeAccountWidget_Starter クラスのCPPファイルを開き、UpgradeAccount() 関数を以下のコードに置き換えます。この関数は、アカウントアップグレード検証ウィジェットを開く前に、追加の入力検証リクエストを送信します。

    void UUpgradeAccountWidget_Starter::UpgradeAccount()
    {
    const FString Username = Edt_Username->GetText().ToString();
    const FString DisplayName = Edt_DisplayName->GetText().ToString();
    const FString Email = Edt_Email->GetText().ToString();
    const FString Password = Edt_Password->GetText().ToString();
    const FString RetypePassword = Edt_RetypePassword->GetText().ToString();

    ToggleWarningText(false);

    // Basic local input validations.
    if (Username.IsEmpty() || DisplayName.IsEmpty() || Email.IsEmpty() || Password.IsEmpty() || RetypePassword.IsEmpty())
    {
    ToggleWarningText(true, EMPTY_REQUIRED_FIELDS_ERROR);
    return;
    }
    else if (!AccelByteWarsUtility::IsValidEmailAddress(Email))
    {
    ToggleWarningText(true, EMAIL_INPUT_VIOLATION_ERROR);
    return;
    }
    else if (!Password.Equals(RetypePassword, ESearchCase::Type::CaseSensitive))
    {
    ToggleWarningText(true, PASSWORD_NOT_MATCH_ERROR);
    return;
    }

    // Send request to validate inputs.
    FUserInputValidationRequest Request;
    Request.Username = Username;
    Request.DisplayName = DisplayName;
    Request.UniqueDisplayName = DisplayName;
    Request.Password = Password;
    Btn_Upgrade->SetIsEnabled(false);
    RegisterUserInGameSubsystem->ValidateUserInput(
    Request,
    FOnUserInputValidationComplete::CreateWeakLambda(this, [this]
    (bool bIsValid, const FString& ValidationMessage)
    {
    Btn_Upgrade->SetIsEnabled(true);
    if (bIsValid)
    {
    ProceedToVerifyAccount();
    return;
    }

    ToggleWarningText(true, FText::FromString(ValidationMessage));
    }));
    }
  3. VerifyAccountWidget_Starter クラスのCPPファイルを開き、SendVerificationCode() を以下のコードに置き換えて、メール検証コードリクエストを送信します。

    void UVerifyAccountWidget_Starter::SendVerificationCode(const bool bForceResend)
    {
    ToggleWarningText(false);
    Ws_VerifyAccount->LoadingMessage = SEND_VERIFICATION_CODE_MESSAGE;
    Ws_VerifyAccount->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Loading);

    Btn_Resend->SetIsEnabled(false);
    RegisterUserInGameSubsystem->SendUpgradeAccountVerificationCode(
    UpgradeAccountData.GetEmail(),
    bForceResend,
    FOnSendUpgradeAccountVerificationCodeComplete::CreateWeakLambda(this, [this](bool bWasSuccesful, const FString& ErrorMessage)
    {
    Ws_VerifyAccount->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Not_Empty);

    if (!bWasSuccesful)
    {
    Btn_Resend->SetIsEnabled(true);
    ToggleWarningText(true, FText::FromString(ErrorMessage));
    return;
    }

    StartRequestVerificationCodeCooldown();
    })
    );
    }
  4. 最後に、同じファイル内で、UpgradeAndVerifyAccount() を以下のコードに置き換えて、メール検証コードを使用してアカウントをアップグレードします。

    void UVerifyAccountWidget_Starter::UpgradeAndVerifyAccount()
    {
    const FString VerificationCode = Edt_VerificationCode->GetText().ToString();
    if (VerificationCode.IsEmpty())
    {
    ToggleWarningText(true, EMPTY_VERIFICATION_CODE_ERROR);
    return;
    }

    ToggleWarningText(false);
    Ws_VerifyAccount->LoadingMessage = UPGRADE_ACCOUNT_MESSAGE;
    Ws_VerifyAccount->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Loading);

    RegisterUserInGameSubsystem->UpgradeAndVerifyAccount(
    AccelByteWarsUtility::GetLocalUserNum(GetOwningPlayer()),
    AccelByteWarsUtility::GetUserId(GetOwningPlayer()),
    UpgradeAccountData.GetUsername(),
    UpgradeAccountData.GetDisplayName(),
    UpgradeAccountData.GetEmail(),
    UpgradeAccountData.GetPassword(),
    VerificationCode,
    FOnUpgradeAndVerifyAccountComplete::CreateWeakLambda(this, [this](bool bWasSuccessful, const FString& ErrorMessage, const FAccountUserData& NewFullAccount)
    {
    Ws_VerifyAccount->SetWidgetState(EAccelByteWarsWidgetSwitcherState::Not_Empty);

    if (!bWasSuccessful)
    {
    ToggleWarningText(true, FText::FromString(ErrorMessage));
    return;
    }

    UpgradeAccountData.Reset();
    OpenToMainMenu();
    })
    );
    }

リソース