UI Toolkit は TextCore を使用してテキストをレンダリングします。これは、TextMesh Pro に基づいたテクノロジーです。TextCore は高度なスタイリング機能を提供しており、さまざまなポイントサイズや解像度でテキストをはっきりとレンダリングすることができます。Signed Distance Field (SDF) フォントレンダリングを活用しており、変形や拡大されても鮮明な見た目のフォントアセットを生成することができます。
この例では、UI Builder でのテキストのスタイル設定、静的およびダイナミックフォントアセットの作成と適用、リッチテキストタグとカスタムスタイルシートを使用したテキストのスタイル設定、パネルのテキスト設定を管理するための UITK Text Settings アセットの作成方法を示します。
ノート: デモンストレーション目的で、このガイドではランタイム UI を使用しています。フォントアセットとスタイルシートの作成手順は、エディター UI にも適用できます。ただし、現在のリリースでは、エディター UI のデフォルトの UITK Text Settings を変更することはできません。
このガイドは、Unity エディター、UI Toolkit、および C# スクリプトに精通している開発者を対象としています。始める前に、以下の点を理解しておいてください。
ランタイム UI から開始し、パネルのテキスト設定を管理する UITK Text Settings アセット を作成します。また、フォントアセットとカスタムスタイルシートを格納するための Resources フォルダーとサブフォルダーも作成します。
Assets フォルダーに、Resources フォルダーを作成します。Assets\UI Toolkit フォルダーを右クリックし、Create > UI Toolkit > Text Settings を選択して UITK Text Settings.asset を作成します。UITK Text Settings.asset の Inspector ウィンドウには、フォントアセット、テキストスタイルシートアセット、スプライトアセット、およびカラーグラデーションプリセットのデフォルトパス名が表示されます。Resources フォルダーに、Fonts & Materials と Text Style Sheets という名前の 2 つのフォルダーを作成します。
UI Builder を使用して、トグルテキストのスタイルを太字斜体、フォントサイズを 12px にします。詳細については、USS でテキストのスタイルを設定する を参照してください。
SimpleRuntimeUi.uxml をダブルクリックして、UI Builder で開きます。
静的フォントアセット を作成し、ボタンコントロールに適用します。静的フォントアセットの場合、ソースフォントファイルをビルドに追加する必要はありません。ただし、ボタンの表示テキストのすべての文字に対してアトラスを生成する必要があります。表示テキストは This is a Button で、テキストに * を追加するので、TBhinostua* 用のアトラスを生成します。
Google Fonts から Lato フォントパッケージをダウンロードします。
フォントパッケージファイルを解凍し、プロジェクトの Assets フォルダーに Lato-Regula.ttf を配置します。
フォントファイルの Inspector ウィンドウで、以下を確認します。
Project ウィンドウで Lato-Regula.ttf を右クリックし、Create > Text Core > Font Asset > SDF を選択します。これにより、Lato-Regula SDF.asset というダイナミックフォントアセットが作成されます。
Lato-Regula SDF.asset の Inspector ウィンドウで、Atlas Population Mode を Static に設定します。
Update Atlas Texture をクリックします。
Font Asset Creator ウィンドウの Character Set リストから、Custom Characters を選択します。
Custom Characters List ボックスに TBhinostua* と入力します。
Generate Font Atlas をクリックします。
変更を保存します。
Assets\Resources\Fonts & Materials フォルダーに Lato-Regula SDF.asset を配置します。
SimpleRuntimeUi.uxml をダブルクリックして、UI Builder で開きます。
ボタンコントロールの Inspector ウィンドウで、Text > Font Asset > Lato-Regula SDF を選択します。
ダイナミックフォントアセット を作成し、TextField コントロールに適用します。ダイナミックフォントアセットの場合は、ソースフォントファイルをビルドに追加する必要があります。ソースフォントファイルをフォントに設定されたパスに直接インポートします。
Google Fonts から Roboto フォントパッケージをダウンロードします。
フォントパッケージファイルを解凍し、プロジェクトの Assets\Resources\Fonts & Materials フォルダーに Roboto-Regular.ttf を配置します。
フォントファイルの Inspector ウィンドウで、以下を確認します。
Roboto-Regular.ttf を右クリックし、Create > Text Core > Font Asset を選択します。これにより、Roboto-Regular SDF.asset というダイナミックフォントアセットが作成されます。
SimpleRuntimeUi.uxml をダブルクリックして、UI Builder で開きます。
TextField コントロールの Inspector ウィンドウで、Text > Font Asset > Roboto-Regular SDF を選択します。
リッチテキストタグ を使用して、ラベルコントロールのテキストのスタイルを設定します。
ノート: 現在のリリースでは、リッチテキストタグは TextField でサポートされていません。
SimpleRuntimeUi.uxml をダブルクリックして、UI Builder で開きます。This is a <font-weight=700><size=2em><color=#FF0000>*Label*</color></size></font-weight> に変更します。これにより、単語 Label は大きく、赤、太字になり、その両側にアスタリスクが表示されます。ラベルは Viewport ウィンドウでは以下のようになります。
Label と同じスタイルを Button に適用するには、カスタムスタイルシート を作成し、そのスタイルを両方の単語に適用します。
Assets\Resources\Text Style Sheets フォルダーを右クリックし、Create > Text Core > Text StyleSheet を選択します。これにより、UITK Text Settings アセットで設定したパスに Text StyleSheet.asset が作成されます。
Text StyleSheet.asset の Inspector ウィンドウで以下を行います。
ExampleStyle と入力します。<font-weight=700><size=2em><color=#FF0000>* と入力します。*</color></size></font-weight> と入力します。
UITK Text Settings.asset の Inspector ウィンドウで、Default Style Sheet リストから、Text StyleSheet を選択します。
SimpleRuntimeUi.uxml をダブルクリックして、UI Builder で開きます。
ラベルコントロールの Inspector ウィンドウで、Text を <s>This is a <style="ExampleStyle">Label</style> に変更します。
Enable Rich Text が選択されていることを確認します。
ボタンコントロールの Inspector ウィンドウで、Text を <s>This is a <style="ExampleStyle">Button</style> に変更します。
Enable Rich Text が選択されていることを確認します。
再生モードに入り、ランタイム UI でテキストを確認します。
テキストフィールドに、ランダムな文字を入力します。ダイナミックフォントアセットの場合、テキストフィールドにテキストを入力するとフォントアトラスが動的に生成されます。
プロジェクトの Assets\Resources\Fonts & Materials フォルダーで、Roboto-Regular SDF.asset を選択します。
Roboto-Regular SDF.asset の Inspector ウィンドウで、Update Atlas Texture を選択して Font Asset Creator ウィンドウを開きます。アトラスウィンドウが非表示になっている場合は展開します。入力した文字がアトラスウィンドウに表示されます。