UnrealEngine4(以下、UE4)では文字列型が3つあるが、ユーザーにUIなどで表示して見せる文字列はText型であるべきとされている。このText型の文字列の一部を置き換えたり加工したりするのに使えるのが**FormatTextノード**だ。
TL;DR
- UE4でユーザーに見せる文字列は
Text型である必要がある -
Text型の利点を損なうことなく、加工をするのに必要なのが FormatTextノード - 具体的には文字列内での変数展開ができる
-
String型を加工して使っちゃダメ
なんでText型を使うの?
-
どこに散らばっていてもgatherできる
- localization dashboardのGatherで横断して収集できる
- UMG内, LevelBP, ClassBP, WidgetBP, それらの各種パラメータなどバイナリのアセットファイルを横断して収集する
- 本来は翻訳用だが、誤植修正や一括置換に使うこともできる
- バイナリアセット内に含まれることが多いUE4では大きな利点
- UMGで文字列表示は原則
Text型のみ- むりやりキャストすることもできるが、前述の利点がない
FormatTextノードの使い方
文字列内で数字の引数を指定する
文字フォーム内の文字列に{0}といった記法で記入する。
記入後確定すると、数字の名前の付いた引数ピンがノードに追加される。
引数ピンはWildcard型で以下の型が引数として許される。
- 数値:
Byte,Integer,Float - 文字列:
Text - Enum:
ETextGender
文字列内で名前つき引数を指定する
文字フォーム内の文字列に{param}といった記法で記入する。
記入後確定すると、そのparamという名前の引数の入力ピンが追加される。
他の挙動も数字の引数と同じ。
マジックナンバーを防止する意味ではこちらのほうが良いかも。
Formatピンにノードをつないだ後に +Add Pin
まずは引数を含んだText文字列を用意する(Text型の変数のデフォルト値やMakeLiteralTextノードで)。これをFormatピンにつなぐ。
すると+Add Pinボタンが増えるのでクリックして入力ピンを増やす。
そのままでは0という名前の入力ピンで{0}以外は置き換えできないのでDetailsパネルで引数名(ピン名)を変更する。
この方法は手間は多いが文字列の中身にかかわらずピンを増やすことができる。







