組み込み UI のセットアップ
[BP_CustomSpectatorPawn]
を利用できますが、このクラスとその親クラスはプラグイン内にあるため、プラグインをアップデートするとプラグイン内で行った変更はすべて失われます。これらは主に参考用や出発点として提供されています。強くおすすめ するのは、BP_CustomSpectatorPawn
をプラグインフォルダの外に複製し、親クラスもプラグイン外のご自身の C++ クラスに変更することです。
UI を表示する前に、GameMode の追加設定が必要です。SequencePlugin には、プラグインコンテンツフォルダの [Demonstration]
内にサンプル GameMode [GM_Sequence]
が同梱されています。この GameMode を複製してプラグインフォルダの外に移動し、[GM_Sequence]
を開いてデフォルトの Pawn を先ほど作成した Pawn Blueprint に設定してください。
最後に、プロジェクト設定でこの GameMode をデフォルトの GameMode として設定する必要があります。具体的には ProjectSettings -> Maps & Modes
で設定します。
Unreal のウェブブラウザプラグインは Chromium 埋め込みブラウザを使用しています。お使いのデバイスが対応していない場合は、Unreal の Launch URL
機能を代わりにご利用ください。
さっそくプロジェクトを実行してみましょう!ここまで正しく設定できていれば、ソーシャル認証でログインできるはずです。
組み込み UI のカスタマイズ
SequencePlugin Content/Core/Style フォルダ内に F_SequenceUIStyle
という構造体があります。この構造体のデフォルト値セクションで、UI 全体の色や画像を変更できます。現在は Sequence_Style_Dark_Mode
のみを参照しています。
カスタム UI 連携
まずは [UAuthenticator]
UObject を [UAuthenticator * Auth = NewObject<UAuthenticator>()]
のように作成します。この UObject が Sequence の認証処理を管理します。
C++ の UObject 内で、[SequenceBackendManager.h/.cpp]
のように一連のパススルー [UFUNCTIONS]
をセットアップします。各呼び出しは [UAuthenticator]
で実装されているので、ご自身の UAuthenticator UObject でデータを渡すだけです。
/*
Used to initiate mobile Social Signin
(No other calls need to be made to complete mobile SSO)
*/
void InitiateMobileSSO(const ESocialSigninType& Type)
/*
Optional Call,
Used to set a custom encryptor implementation for the Authentication Process
*/
void SetCustomEncryptor(UGenericNativeEncryptor * EncryptorIn);
/*
This call is for generating a login URL for Desktop based Social Signin
the received URL is fed into a WebBrowser to begin the login process
*/
FString GetLoginURL(const ESocialSigninType& Type);
/*
This is call is for undergoing social login once an ID_Token has been collected.
*/
void SocialLogin(const FString& IDTokenIn);
/*
This Call is made after you've collected the email address from the Users in the UI
The Delegate **[AuthRequiresCode]** will fire when a code is ready to be received
by the UAuthenticator
*/
void EmailLogin(const FString& EmailIn);
/*
This is call is made after the Delegate **[AuthRequiresCode]** is fired
The Code collected from the User in the GUI is sent in via this call
*/
void EmailCode(const FString& CodeIn);
/*
Optional call used to retrieve stored credentials on disk
*/
FStoredCredentials_BE GetStoredCredentials() const;
/*
Optional call used to check if the credentials on disk are valid or not
*/
bool StoredCredentialsValid();
デリゲートへのバインド
サインインを呼び出す前に、[AuthSuccess]、[AuthFailure]、[AuthRequiresCode] の各デリゲートに必ずバインドしてください。以下のようにバインドできます。
this->authenticator->AuthRequiresCode.AddDynamic(this, &AYourClass::YourCallReadyToReceiveCode);
this->authenticator->AuthFailure.AddDynamic(this, &AYourClass::YourCallShowAuthFailureScreen);
[AuthSuccess] にはパラメータも渡されるため、次のようにバインドします。
FScriptDelegate del;
del.BindUFunction(this, "CallShowAuthSuccessScreen");
this->authenticator->AuthSuccess.Add(del);
注意: カスタム GUI を構築する際は SequenceBackendManager.h/.cpp
の使用を自身のものに置き換えてください。ここでは説明のために参照例として使っています。[CallShowAuthSuccessScreen] は SequenceBackendManager.h で次のように定義されています。
UFUNCTION()
void CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn);
And in SequenceBackendManager.cpp like so:
void ASequenceBackendManager::CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn)
{
this->Credentials = CredentialsIn;
if (this->ShowAuthSuccessDelegate.IsBound())
this->ShowAuthSuccessDelegate.Broadcast(Credentials);
else
UE_LOG(LogTemp, Error, TEXT("**[Nothing bound to: ShowAuthSuccessDelegate]**"));
}