UE5でFPSゲーム制作 Part24-字幕

字幕

字幕が呼ばれるタイミングは時間、場所、アクションなど様々なフラグによって違うため、World Subsystemを利用するとどこからでもアクセスできて便利です。

 

BattleManagerSubsystem.h

作成したBattle Manager SubsystemはWorld Managerなのでここにイベントディスパッチャーを作成します。

DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FSubtitlesTextEvent, int, text, int, color);

UPROPERTY(BlueprintAssignable, Category = "BattleManager")

FSubtitlesTextEvent OnSubtitlesTextEvent;

UFUNCTION(BlueprintCallable, Category = "BattleManager")

void OnSubtitlesTextEventDispather(int TextIndex, int ColorIndex);

BattleManagerSubsystem.cpp

テキスト番号とテキストカラーの2つのパラメーターを送るようにします。

 

WBP_MainHUD

ウィジェットにHorizonal Boxで字幕用のテキストを作ります。

ConstructからOn Subtitles Text Eventにイベントをバインドします。

Elate Visibilityの型とint型の変数を用意します。Visibility SubtitlesはデフォルトでHiddenであり、呼ばれると5秒間Visibleになります。

先ほど作った字幕のテキストにバインディングを作成します。

名前とテキストはそれぞれ別のバインディングを作成し、Subtitles_Text_とSubtitles_Name_で区別します。イベントディスパッチャーが呼ばれると、テキストから参照されて、「Subtitles_Name_0:Subtitles_Text_0」」という字幕を表示し0の部分が変化していきます。

名前のほうのテキストにColor and Opacityのバインディングを作成します。

リターンノードの構造体ピンを分割してColorを編集します。イベントディスパッチャーのColorという変数でスイッチします。敵のセリフを赤にしたり、味方のセリフを青にしたりといった使い方ができます。

 

あとは任意の場所からイベントディスパッチャーを読んであげるだけです。

 

テキストの翻訳は別に行う必要がありますが、字幕の作成自体はこれで完成です。