【Unity】TextMeshProを使っていて、シーンを切り替えたときにコンソールに”The character used for Underline is not available in font asset….”のインフォメーションが表示される

このログメッセージは、UnityのTextMeshProを使用しているときに、アンダーライン文字に使用される特定の文字がフォントアセット「rounded-mplus-1c-heavy SDF」に存在しないという警告を示しています。

フォントアセットに_が登録されていないことが推測されます

コンソールへのメッセージ

採用したフォント

M Plus Rounded 1c

対応

Font Asset Creatorで再度作成する

半角で、次の文字(半角英字のアンダーバー)を追加して、Generateし直します

_

実行結果

メッセージは表示されなくなります

メッセージが表示される理由(推測)

実際に_を使用していない場合でも、これらの文字をFont Asset GeneratorCustom Character Listに追加することで警告が改善される理由については、以下の可能性が考えられます。

  1. デフォルトの文字セットの不足: フォントアセット生成時に選択されたデフォルトの文字セットに、必要な特殊文字が含まれていない可能性があります。TextMeshProでは、フォントアセットを生成する際に特定の文字セットが選択され、そのセットに含まれる文字のみがフォントアトラスに追加されます。もし、デフォルトで選択された文字セットに不足がある場合、特定の機能(例えばアンダーラインの表示)を正しくサポートするために追加の文字が必要になることがあります。_を含めることで、この不足を補い、必要な機能が正しく動作するようになります。
  2. 内部処理による文字の使用: TextMeshProが内部的に特定の特殊文字を使用している場合、それらの文字がフォントアセットに含まれていないと警告が発生する可能性があります。たとえば、アンダーラインや強調表示などの特定のテキスト装飾を実現するために、TextMeshProが内部的に_などの文字を利用している場合があります。このような内部処理のために、直接的には使用していない特殊文字でも、フォントアセットに含める必要があるのです。
  3. フォントアセットの完全性確保: _の文字を含めることで、フォントアセットの完全性を高めることができます。TextMeshProのフォントアセットには、テキスト表示に必要なさまざまな文字や記号が含まれており、これらを完全にサポートすることで、将来的にテキストの修正や追加が発生した場合でも、すぐに対応できるようになります。

実際に使用していない文字をフォントアセットに追加することは、直感に反するかもしれませんが、上記のような理由から、テキスト表示の警告を回避し、柔軟なテキスト処理をサポートするために役立つ場合があります。

Unity

Posted by hidepon