【UE4】FString、FText、FNameの違い

UE4ではFStringFTextFNameいずれかのクラスを使い文字列を扱います。

f:id:shuntaendo:20170704040044p:plain

この3つのクラスはどういう違いが合って、どういう場合に使えばよいのか書いていきます。


FString

初めにFStringです。
このクラスは3つの中では、最も使う機会が多いと思います。

主に内部的に文字列操作をする目的で使います。

FStringはデバッグ時にPrintStringノード等で使うことが多いと思いますが、文字を統合したり、一部分だけ取り出したり、文字列操作をする関数は豊富でノードの種類もざっと出しただけでもこれだけあります。

f:id:shuntaendo:20170704041531p:plain

ただ、FStringは他のFName, FTextのような不変文字列クラスに比べて負荷が大きいです。



FText

UIなどでユーザーに表示される文字列はFTextであるべきとされています。

また、FTextはローカライズ用でもあります。

ローカライズについては下記の記事で詳しく解説されていました。m(_ _)m

qiita.com



不変文字列クラスなのでFStringのようにBP上で文字列操作を行うことはできませんが、「Format Text」ノードで文字列内での変数展開ができます。

f:id:shuntaendo:20170902163539p:plain

詳しく書いている方がいらっしゃいました。ありがたや

qiita.com




おまけですが、「Print Text」ノードというのもありPrint Stringと同様、スクリーンとOutput Logにログを出力することができます。

f:id:shuntaendo:20170902163813p:plain



FName

最後にFNameです。

FTextと同じく不変文字列クラスで文字列操作はできません。
主にアセット名やパラメータ名として使われ、パラメータやデータテーブルなど各アセットにアクセスするために用いられます。

また、静的な性質なのでFString、FTextと比べてもアクセスが早く、負荷がとても軽いシステムです。

クラス名 Bytes
FString 40
FText 16
FName 4




以上がUE4における文字列クラスの用途紹介でした。参考になれば幸いです。