これは何ですか?
字幕、クローズド キャプション、オーディオから切り離されたシーンの説明をサポートするために設計された Unreal Engine プラグイン。 たとえば、関連するオーディオ アセットの持続時間や再生状態に関係なく、これらの新しい字幕を他のシステムからキューに入れることができます。 この新しい字幕システムは、サウンドからの字幕の独立した使用をサポートしておらず、廃止予定である既存のシステムよりも優先されます。 字幕の表示タイミング、フォント、色などをカスタマイズできます。
どこに出てきましたっけ
\Engine\Plugins\Experimental\SubtitlesAndClosedCaptions
Include:#include SubtitlesSubsystem.h
プラグインをエディタでロードするには、[Edit (編集)] > [Plugins (プラグイン)] の順に選択し、開いたタブで名前を入力するか、[Subtitles and Closed Captions (字幕およびクローズド キャプション)] までスクロールして、チェックボックスをオンにし、[Restart the Editor (エディタを再起動)] をクリックします。
使用方法
各字幕は UAssetUserData から派生した USubtitleAssetUserData UCLASS として保存され、サブクラス化して Unreal アセット オブジェクトに追加のカスタム データを保存できます。
USubtitleAssetUserData メンバー
テキスト:字幕に表示されるローカライズ可能な FText。
Shift キーと Enter キーを同時に押すか、テキストに \n を含めて改行を指定することで、複数行のテキストをサポートします。
FText は、ローカライゼーション システムのハッシュキー実装を使用して、クライアントの現在の言語にローカライズされます。ローカライゼーションは、字幕システムの前に独立して行われます。
持続時間:字幕を表示する時間 (秒)。
デフォルト:3 秒。
0.05 秒以上である必要があります。
持続時間タイプが
UseDurationPropertyに設定されている場合のみ有効になります
持続時間タイプ:UseDurationProperty に設定すると、Duration プロパティが有効になります。また、UseSoundDuration に設定すると、アタッチされているサウンドが終了したときに自動的に停止します。
UseSoundDurationは、字幕がAssetUserDataとしてSoundBaseアセットに追加された場合にのみ機能します。
StartOffset:字幕行の表示を開始する時間オフセット (秒)。
これは、オーディオ アセットごとの複数の字幕の表示を単純化するために使用することができます。たとえば、 複数の文を含む長い
SoundWaveでは複数の字幕を使用でき、それぞれにおいてStartOffsetが各文の先頭の時間オフセットに設定されます。デフォルト:0 秒。
優先度:複数の字幕が同時に再生される場合、値が低い字幕よりも優先度が最も高い (値が最も大きい) 字幕が優先されて再生されます。
これは、字幕が部分的にしかオーバーラップしていない場合にも適用されます。オーバーラップは
StartOffsetと持続時間から決まります。優先度の高い字幕を表示中に、新しい字幕をすぐに表示するか、
StartOffsetを介して表示するように設定すると、優先度がより低い字幕は表示されません。一度に表示できるのは、各カテゴリ (字幕、オーディオの説明など) のうち 1 つだけです。
競合する 2 つの字幕が同じ優先度である場合、キューに入っている最も古いものが表示され続けます。 優先度が競合しているためキューに入っている字幕が表示されない場合は、デバッグ ログに警告が送信されます。
デフォルト:1。
ESRB:字幕のカテゴリの ESRB レーティング。 これは説明フィールド セットであり、ゲーム デベロッパーによって使用されます。
これにより、呼び出し元はこの値を確認することで字幕行を表示するかどうかを判断できるようになります。
デフォルト:ESRB::Everyone。
SubtitleType:アセットが Subtitle、ClosedCaption、AudioDescription のいずれであるかを指定します。これはゲーム デベロッパーによる説明フィールド セットです。
これにより、呼び出し元はこの値を確認することで字幕行を表示するかどうかを判断できるようになります。
各
SubtitleTypeには、後述するTextBlockウィジェットを介して設定される独立した表示パラメータがあります。表示する際は、異なる字幕タイプを重ならないように配置します。
パラメータを表示
字幕は、TextBlock ウィジェットを使用して表示されます。
Unreal Editor で、[Edit (編集)] > [Project Settings (プロジェクト設定)] に移動し、[Game (ゲーム)] にスクロールして、[Subtitles and Closed Captions (字幕およびクローズド キャプション)] をクリックします。
メニューで、ドロップダウンを使用して
DefaultSubtitleWidgetを選択します。[Browse to Asset (アセットをブラウズ)] アイコンをクリックしてウィジェットを表示します。
このウィジェットをダブルクリックして開きます。
デフォルトの字幕ウィジェットでは、独立した表示パラメータ (例: 配置、フォント、色、不透明度など) を字幕、クローズド キャプション、オーディオの説明に対して設定できます。 字幕テキスト ボックスをダブルクリックして、[Details (詳細)] タブを開きます。
デフォルトでは、字幕は白色のフォントで表示され、ClosedCaptions と AudioDescriptions はグレーを使用します。
ブループリント アクセス
USubtitleAssetUserData および TextBlock ウィジェット パラメータに加えて、C++ およびブループリントで使用するために次の API が公開されています。
QueueSubtitle(const FQueueSubtitleParameters&, const ESubtitleTiming Timing = ESubtitleTiming::InternallyTimed)
FQueueSubtitleParameters には次のものが含まれます。
上記の字幕
USSubtitleAssetUserData。アセットの持続時間をオーバーライドするオプションのパラメータ。
字幕がすでにアクティブに表示されている場合、アクティブな字幕の持続時間が指定された持続時間に更新されます。
タイミング
ESubtitleTiming::ExternallyTimed に設定すると、字幕の持続時間を使用するのではなく、手動で字幕のキューイングと有効期限を制御します。外部時間設定の字幕は、StopSubtitle() によって手動で削除されるまで、無期限にアクティブのままになります。時間拡張やワープを含むシーケンサーのシナリオでは、ESubtitleTiming::ExternallyTimed を使用して字幕を手動でキューに入れて、字幕を停止するのが最適です。複数の字幕をキューに入れる場合は、優先度が最も高いもののうち、最新のものが表示されます。
| コード | 結果 |
|---|---|
IsSubtitleActive (const | 指定された字幕アセットが表示中の場合、true を返します。 |
StopSubtitle (const | 指定された字幕アセットの表示を停止します。 これには、 |
StopSubtitle() | キューに入っている全ての字幕の表示を停止します。 これには、 |
動的に生成された字幕の表示
任意のソースからの FText (例: マルチプレイヤー サーバーから動的にレプリケート) を字幕として表示できます。 例:
USubtitlesSubsystem* Subsystem = NewObject<USubtitlesSubsystem>(pWorld, NAME_None, RF_Transient);
check(Subsystem != nullptr);
USubtitleAssetUserData* Subtitle = NewObject<USubtitleAssetUserData>(GetTransientPackage(), NAME_None, RF_Transient);
check(Subtitle != nullptr);
Subtitle->Text = <arbitrary FText input>;
const UAssetUserData& AssetUserData = *CastChecked<const UAssetUserData>(Subtitle);
シーケンサー
シーケンサーの字幕トラックに字幕アセットをドラッグします。その後、字幕を右クリックして [Properties (プロパティ)] を選択することで、字幕プロパティを編集できます。 シーケンサーでは、字幕の持続時間はその持続時間プロパティではなく、選択範囲の開始および終了によって制御されます。
Localization (ローカライゼーション)
字幕システムは、ローカライズ可能な FText プロパティを介してローカライゼーションをサポートします。FText は、ローカライゼーション システムのハッシュキー実装を使用して、クライアントの現在の言語にローカライズされます。ローカライゼーションは、字幕システムの前に独立して行われます。「Unreal Engine でのコンテンツのローカライズ | Unreal Engine 5.5 のドキュメント | Epic Developer Community」を参照してください。
移行ガイド
移行ツールは、指定された DialogueWave や SoundWave の字幕データを新しい字幕アセット タイプにコピーします。 新しいアセットを、指定された DialogueWave や SoundWave の AssetUserData に置きます。 すでに移行されている字幕は、指定された DialogueWave や SoundWave が再度移行された場合に更新されます。ただし、再移行による変更がない場合は、ターゲット アセットはダーティとマークされず、ディスクに再保存する必要はありません。
移行は非破壊的です。新旧の字幕がデフォルトで自動的に表示され、使用されるコンテンツをユーザーが制御できます。
ディスプレイ パラメータ設定 (例: フォント、色など) は現在、移行ツールに含まれていません。これらは、先述の TextBlock ウィジェット設定を介してカテゴリごとに設定されます。
SoundWave の移行
このツールを使用するには、コンテンツ ブラウザで 1 つ以上の SoundWave アセットを選択します。 次に、右クリックして [Scripted Editor Actions (スクリプト エディタ アクション)] サブメニューを見つけ、[Create Subtitle (字幕を作成)] を選択します。これにより、移行された字幕データを含む SoundWave に新しい USubtitleAssetUserData が作成されます。
必要に応じて、次の方法で古い字幕システムからデータを削除できます。
コンテンツ ブラウザで 1 つ以上の
SoundWaveアセットを選択します。右クリックして [Scripted Editor Actions (スクリプト エディタ アクション)] サブメニューを見つけます。
[Remove Legacy Subtitles (レガシー字幕を削除)] を選択すると、古い字幕の配列が空になります...
DialogueWaves の移行
DialogueWave に関連付けられた SoundWave を移行した後、コンソール コマンド au.UseNewSubtitles 1 を使用して、この字幕プラグインでこれを確認できます。 コンソール変数の設定をデフォルトの0に戻すことで、元のコンテンツおよび字幕システムの使用に戻すことができます。
パフォーマンスに関する注記
ディスク使用量は新旧のシステムで多少異なります。新しいシステムに移行した字幕では、表示用にキューに入れる際に、字幕ごとに約 16 バイト (旧システムでは 80 バイト、新システムでは 96 バイト) 必要になります。
前 (キューに入れられた字幕あたり 80 バイト):
FQueueSubtitleParams:56 バイトFSubtitleCue:24 バイトの倍数 この比較ではこれらのうち 1 つだけ想定します。
後 (キューに入れられる字幕あたり 96 バイト):
FQueueSubtitleParameters:16 バイトUSubtitleAssetUserData:80 バイト
メモリ内のキューに入っていない字幕では FQueueSubtitleParameters 構造体は使用されないため、「バルク」字幕では、追加のプロパティや機能によって 24 バイト (旧) と 80 バイト (新) で 56 バイトの差があります。
移行ツール ソース
移行ツールの変更が必要な場合は、字幕プラグインのフォルダ「SubtitlesAndClosedCaptions/Content/EditorUtilities/CreateSubtitlesFromSoundWaves.uasset」にあります。
他の新しい字幕プラグインと同様に、移行ツールは現在、実験的機能とマークされています。