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という変数でスイッチします。敵のセリフを赤にしたり、味方のセリフを青にしたりといった使い方ができます。
あとは任意の場所からイベントディスパッチャーを読んであげるだけです。
テキストの翻訳は別に行う必要がありますが、字幕の作成自体はこれで完成です。