Unreal Engine (UE) における テキスト ローカライゼーション の主要なコンポーネントは FText クラスです。次の機能を提供することによりテキスト ローカライゼーションをサポートしているため、すべてのユーザー向けテキストはこのクラスを使用する必要があります。
-
テキストのフォーマット (プレースホルダー パターンからテキストを生成するため)。
-
派生テキストの生成 (テキストを大文字または小文字にするなど)。
FText にはローカライズされていない、または「インバリアント カルチャ」のテキストを作成する AsCultureInvariant 関数 (または INVTEXT マクロ) も用意されています。これは、外部 API のプレーヤー名をユーザー インターフェースに表示できる形式に変換する場合などに役立ちます。
「FText::GetEmpty()」、または単に「FText()」を使用して空白の FText を作成することができます。
変換
FText は FString に変換したり、それから変換することができます。ただし、FText にはローカライゼーション データにリンクした文字列が含まれていることから、FString には文字列のみが含まれる一方で、これらのメソッドは本質的に損失が多く、ローカライゼーション データを破棄 (またはその作成に失敗) することになります。代替のメソッドとして テキスト値のマーシャリング を行うと損失のない変換が可能です。しかし、このメソッドでは手動で処理するより内部マーシャリングに適したデータが生成されます。
次の変換関数は FText 文字列を生成しますが、ローカライゼーション データは含まれません。
FText 関数 |
説明 |
|---|---|
AsCultureInvariant |
ローカライズされていない、インバリアント カルチャの FText インスタンスを既存の FString から作成します。 |
FromString |
ローカライズされていない これは、非エディタ ビルドの |
FromName |
ローカライズされていない FText インスタンスを既存の FName から作成します。これは、FName パラメータの ToString 関数の出力で FromString を呼び出すのと同じです。 |
FText から FString に変換するには、ToString 関数を使用します。FString に変換すると FText の文字列データは保持しますが、ローカライゼーション データは失われます。
比較
FText データは単純な文字列に比べるとより複雑なため、多重定義の演算子による比較はサポートしていません。代わりに、含まれている微妙なデータを認識する比較を実行するための関数をいくつか提供しています。次の比較関数を使用できます。
FText 関数 |
説明 |
|---|---|
EqualTo |
この関数は、使用する比較規則を決定する ETextComparisonLevel の値を取ります。呼び出した FText がこれらの比較規則の中で他と一致するかどうかを示す bool を返します。 |
EqualToCaseIgnored |
この関数は、EqualTo を Second の ETextComparisonLevel の値で呼び出すためのラッパーです。戻り値は EqualTo から直接取得します。 |
CompareTo |
この関数は、使用する比較規則を決定する ETextComparisonLevel の値を取ります。多くの文字列、またはメモリ比較関数と同様に int32 が返されます。その際、「0」は等しいことを表し、負または正の値は呼び出した FText が FText パラメータに対して相対的に昇順または降順にソートされていることを示します。 |
CompareToCaseIgnored |
この関数は、CompareTo を Second の ETextComparisonLevel の値で呼び出すためのラッパーです。戻り値は CompareTo から直接取得します。 |
ユーザー インターフェースで FText を使用する
スレート / UMG
スレートおよび UMG はユーザー向けテキストを表示または管理するためのビルトイン ウィジェットの FText 属性または引数を使用します。カスタマイズしたウィジェットをビルドする場合は FText を使用することを推奨します。
HUD/Canvas
Canvas を使用して HUD システムで FText を表示するには、新しい FCanvasTextItem を作成し、表示するテキストに Text 変数を設定します。次にコード例を示します。
// テキストを含むために新しい FCanvasTextItem インスタンスを作成する。
FCanvasTextItem TextItem(FVector2D::ZeroVector, TestHUDText, BigFont, FLinearColor::Black);
// FCanvasTextItem にテキストを追加する。
TextItem.Text = FText::Format(LOCTEXT("ExampleFText", "You currently have {0} health left."), CurrentHealth);
// FCanvas::DrawItem でテキストを画面に描画する。
Canvas->DrawItem(TextItem, 10.0f, 10.0f);
HUD で Canvas を使用する場合は、DrawItem を DrawHUD 関数内で呼び出すか、DrawHUD で始まる一連の関数の中で呼び出す必要があります。