UIToolKitのフォント設定でハマったこと - TextMeshProの落とし穴?
私達のチームではUIToolkitを試しているところです。普通に書くと大変ですが、AIエージェントとの相性はなかなか良さそうだと感じています。
ただ、今回UIToolkitでテキストを使う際に、あるハマりポイントに遭遇したので共有したいと思います。
TextMeshProのフォントアセットを使えばいい?
UIToolkitのテキスト要素にフォントを設定しようとしたとき、「普段からTextMeshProを使っているし、TextMeshProのフォントアセットを作成してそれを使えばいいだろう」と考えるかもしれません。私も最初はそう思いました。
しかし、これが落とし穴でした!
UIToolkitのテキスト要素に、TextMeshProのフォントアセット(通常、アセットタイプがTextMeshPro Font Assetとなっているもの)を割り当てようとしても、Inspectorのフォント選択欄にD&Dしても反応しなかったのです。
UIToolkitのテキスト描画システムは、TextMeshProとは異なるアセットタイプを要求するのです。
UIToolkitで使うべきフォントアセット
では、UIToolkitではどのようなフォントアセットを使えば良いのでしょうか?
正解は、TextMeshProではない、標準の「テキスト」機能のための「フォントクリエイター」で作成したフォントアセットです。
具体的には、Unityエディターの上部ウィンドウから
ウィンドウ>テキスト>フォントクリエイター

を選択して作成するアセットを使用します。UIToolkitで使用するのはこちらになります。
このアセットを作成したら、Inspectorビューで元になるフォントファイル(.ttfや.otfなど)を設定して使用可能にします。
UIToolkit要素への設定方法
作成したUIToolkit用のフォントアセットは、UIBuilderのタブで設定できます。
ここで第二のハマりポイントがありました! InspectorのタブでFontからFontAssetに切り替えないと使えません。 (わかりづらいですが、下三角があります。)

まとめ
UIToolkitでカスタムフォントを使用する際は、TextMeshProのフォントアセットではなく、Create > UI Toolkit > テキスト で作成した専用のアセットを使用するのが正しい方法です。
TextMeshProに慣れていると、ついそちらのアセットを使いたくなってしまいますが、この違いを知っておけば、フォントが表示されない!と悩む時間を減らせるはずです。
もしUIToolkitでフォント設定に困っていたら、このポイントを確認してみてください。
