Language:
Page Info
Engine Version:

文字列の取り扱い

FName

FNames は、 コンテンツ ブラウザ で新規アセットに名前を付けたり、ダイナミック マテリアル インスタンスのパラメータを変更する場合、またはスケルタル メッシュのボーンにアクセスする時に使います。再利用する場合でも、所定の文字を一回だけデータ テーブルに格納するので、 非常に負荷の軽いシステムです。Fnames は大文字・小文字を区別しません。変更も操作もできません。Fnames のストレージ システムと静的な性質によって、 キーによる参照と Fnames へのアクセスが速いです。FNames サブシステムのもう 1 つの特徴は、文字列から Fname への変換をハッシュ テーブルで素早く行うことです。

FText

FText とは、「表示文字列」のことです。ユーザーに表示するテキストは、すべて FText で処理されます。FText クラスは、ローカリゼーション用にビルトインされたサポートです。 参照テーブルに格納されたローカライズ済みのテキスト コンテンツの処理に加えて、数、日付、時間、フォーマット済みテキストなどのランタイム時にローカライズされるテキストの処理も行います。ローカライズが必要ないテキストでさえも、 FText で処理が可能です。プレイヤー名などのユーザーが入力するコンテンツやスレートで表示されるテキストなどが含まれます。文字列を表示するために変更するというのは非常に危険な操作なので、Ftext には変更関数はありません。

FString

FName や FText と違って FString は操作可能な唯一の文字列クラスです。大文字小文字の変更、サブ文字列の引用、反転など、 様々な種類の文字列操作があります。FStrings は、検索や修正、他の文字列との比較を行うことが可能です。ただし、これらの操作をすると、FStrings の負荷は不変文字列クラスに比べてが大きくなります。

変換

変換元

変換先

FName

FString

TestHUDString = TestHUDName.ToString();

FName

FText

TestHUDText = FText::FromName(TestHUDName);

FName -> FText が有効な場合はありますが、FNames のコンテンツは FText の「自動ローカライゼーション」 の効果がないことに注意してください。

FString

FName

TestHUDName = FName(*TestHUDString);

FString -> FName は危険です。FName は大文字、小文字を区別せず、変換は不可逆であるためです。

FString

FText

TestHUDText = FText::FromString(TestHUDString);

FString -> FText が有効な場合はありますが、FStrings のコンテンツは FText の「自動ローカライゼーション」 の効果がないことに注意してください。

FText

FString

TestHUDString = TestHUDText.ToString();

FText -> FString は危険です。いくつかの言語では不可逆な変換である可能性があるためです。

FText

FName

FText から FName への直接変換はありません。かわりに、FString に変換し、次に FName に変換します。

FText -> FString -> FName は、危険です。FName はケース インセンシティブ、変換は不可逆であるためです。

エンコーディング

一般的に、文字列変数のリテラルを設定する場合、TEXT() マクロを使用するようにします。TEXT() マクロを指定しない場合、リテラルは ANSI を使用してエンコードされます。 ANSI はサポートされる文字が非常に制限されます。FString に渡された ANSI リテラルは TCHAR (ネイティブの Unicode エンコーディング) に変換される必要があります。そのため、TEXT() を使用した方が効率的です。

エンコーディングの詳しい情報は以下のドキュメントをご覧ください。文字エンコード