文字列の取り扱い

UE4 で利用可能な文字列クラスの概要と FName、FText、FString の参照ガイド

Choose your operating system:

Windows

macOS

Linux

FName

FNames は、 コンテンツ ブラウザ で新規アセットに名前を付けたり、ダイナミック マテリアル インスタンスのパラメータを変更する場合、またはスケルタル メッシュのボーンにアクセスする時に使います。再利用する場合でも、所定の文字を一回だけデータ テーブルに格納するので、 非常に負荷の軽いシステムです。

Fnames は大文字と小文字を区別しません。変更も操作もできません。Fnames のストレージ システムと静的な性質によって、 キーによる参照と Fnames へのアクセスが速いです。FNames サブシステムのもう 1 つの特徴は、文字列から Fname への変換をハッシュ テーブルで素早く行うことです。

FText

Unreal Engine 4 (UE4) における テキスト ローカライゼーション の主要なコンポーネントは FText クラスです。次の機能を提供することによりテキスト ローカライゼーションをサポートしているため、すべてのユーザー向けテキストはこのクラスを使用する必要があります。

FText にはローカライズされていない、または「インバリアント カルチャ」のテキストを作成する AsCultureInvariant 関数 (または INVTEXT マクロ) も用意されています。これは、外部 API のプレーヤー名をユーザー インターフェースに表示できる形式に変換する場合などに役立ちます。

FText::GetEmpty() 」、または単に「 FText() 」を使用して空白の FText を作成することができます。

FString

FName FText とは異なり、 FString は、検索や修正、他の文字列との比較を行うことが可能です。ただし、これらの操作をすると、 FStrings の負荷は不変文字列クラスに比べて大きくなります。 FName オブジェクトと FText オブジェクトは共有の文字配列にインデックスを格納しますが、 FString オブジェクトはそれぞれの独自の文字配列を格納するためです。

Printf

FString 関数の`Printf FString オブジェクトのフォーマット引数指定子を C++ printf 関数として作成することができます。同様に UE_LOG マクロは、実行中の UE4 ビルドの種類に応じて printf` 形式の文字列、ログ アウトプット、ログ ファイルを画面に印字します。

これらの文字列と変換を使用するには、必要なヘッダ ファイルをインクルードする必要があることを覚えておいてください。必要なヘッダ ファイルのリストは、各文字列の API リファレンス ページで確認できます。

変換

変換元

変換先

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 はケース インセンシティブ、変換は不可逆であるためです。

FString

int32

int32 TestInt = FCString::Atoi(*MyFString);

FString

float

float TestFloat = FCString::Atof(*MyFString);

int32

FString

FString TestString = FString::FromInt(MyInt);

float

FString

FString TestString = FString::SanitizeFloat(MyFloat);

エンコード

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

エンコードの詳しい情報は「 文字エンコード 」を参照してください。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる