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パネルで引数名(ピン名)を変更する。
この方法は手間は多いが文字列の中身にかかわらずピンを増やすことができる。