スポンサーリンク
エラー・トラブルシューティング

UnityでTextMeshProの日本語が表示されない原因と対処法|□・文字化け・一部だけ消える時の直し方

エラー・トラブルシューティング

UnityでUIや会話システムを作っていると、TextMeshProの文字が突然「□」になって困ることがあります。

「日本語フォントを入れたのに表示されない…」
「ひらがなは出るのに漢字だけ消える…」
「Editorでは正常なのにスマホ実機だけ崩れる…」

私も最初に遭遇した時、「Unity側のバグかな?」と思ってかなり悩みました🙂

でも実際は、TextMeshPro特有の“フォントアセットの仕組み”を理解すると、かなり原因を切り分けやすくなります。

特にTextMeshProは、普通のフォント表示とは少し仕組みが違います。
.ttfや.otfを入れただけでは日本語表示できず、TMP専用の設定が必要になるんですね。

しかも、症状によって原因も変わります。

  • 日本語全部が□になる
  • 一部の漢字だけ表示されない
  • 文字がぼやける
  • 実機だけ表示がおかしい

このあたりを混同すると、設定を何度触っても直らなくなりがちです。

今回は、TextMeshProで日本語が表示されない時に、どこを確認すればよいのかを順番に整理しながら、原因別に対処法をまとめていきます。


TextMeshProで日本語が□になる結論

TextMeshProで日本語が「□」になる場合、ほとんどは日本語の文字データ(Glyph)がFont Assetに入っていないことが原因です。

まずは、次の3つを優先して確認してみてください。

  1. 日本語対応フォントを使っているか
  2. TextMeshPro用のFont Assetを作成したか
  3. 表示したい文字がCharacter Listに含まれているか

特に初心者の方がハマりやすいのが、「フォントファイルをAssetsに入れただけ」で終わってしまうケースです。

たとえば、Noto Sans JPをUnityにインポートしても、TextMeshPro側がまだ「LiberationSans SDF」を使っていると、日本語は表示されません。

英数字だけ正常で、日本語だけ□になる場合は、このパターンがかなり多いです。

また、こんな症状ごとに原因もある程度切り分けできます。

症状原因候補
日本語全部が□になる日本語対応Font Asset未設定
一部の漢字だけ□になるCharacter List不足
Editorでは正常だが実機で崩れるAtlas設定や端末制約
文字がぼやけるAtlas Resolution不足

TextMeshProは少し独特で、「フォントが存在する」だけでは表示できません。

「どの文字を使うか」をFont Asset側で管理しているので、必要な文字が登録されていないと、代わりに□が表示されます。

逆に言うと、原因さえ切り分けできれば、ほとんどの場合は数分で直せます。

私も最初は「Unity壊れた?」と思ってかなり遠回りしましたが、実際はFont Asset設定の見直しだけで解決しました。

まずは「Unityの不具合」より先に、Font Assetの設定を疑うのが近道です。




TextMeshProの日本語表示の仕組み

普通のフォント設定とTMP Font Assetは違う

TextMeshProで日本語表示に苦戦しやすい理由は、通常のUnityテキストと仕組みがかなり違うからです。

普通のフォント表示では、フォントファイル(.ttf や .otf)をそのまま使うことが多いのですが、TextMeshProでは少し流れが増えます。

ざっくり言うと、TextMeshProは次のような仕組みです。

  1. フォントファイルを読み込む
  2. 必要な文字だけを抽出する
  3. 文字画像をAtlasというテクスチャにまとめる
  4. TMP専用のFont Assetとして保存する

つまり、TextMeshProが実際に使っているのは「フォントファイルそのもの」ではなく、TMP用に加工されたFont Assetなんですね。

ここを理解すると、「日本語フォントを入れたのに表示されない」理由がかなり見えやすくなります。

たとえば、Noto Sans JPをAssetsフォルダへ入れただけでは、日本語はまだ表示できません。

そのフォントからTextMeshPro用のFont Assetを生成し、さらにTextMeshProオブジェクトへ設定して初めて表示されます。

しかも、Font Assetには「登録された文字」しか入りません。

なので、こんなことも起きます。

  • ひらがなは表示される
  • よく使う漢字も表示される
  • でも「髙」「①」「〜」だけ□になる

これは、フォント自体が悪いというより、Font Asset側のCharacter Listにその文字が入っていないケースがほとんどです。

特に会話ゲームやUI制作では、後から「この記号だけ出ない!」が発生しやすいんですよね。

私も昔、会話ウィンドウで「…」だけ表示されず、かなり焦ったことがあります。
原因は単純で、Character Listに三点リーダーを入れ忘れていました。

逆に言うと、TextMeshProの日本語問題は「どの文字がFont Assetに含まれているか」を確認できれば、かなり整理しやすくなります。

まずは「フォントを入れたか」ではなく、Font Assetを作ったかを見るのがポイントです。




日本語フォントアセットの作り方

日本語フォントをUnityに入れる

まずは、日本語に対応したフォントをUnityへインポートします。

TextMeshProの初期設定で使われる「LiberationSans SDF」は、日本語に対応していません。
そのため、日本語表示したい場合は別途フォントを用意する必要があります。

初心者の方だと、まずは次のフォントが扱いやすいです。

  • Noto Sans JP
  • M PLUS
  • 源ノ角ゴシック(Source Han Sans)

特にNoto Sans JPは、UIでも会話文でも使いやすく、文字数も豊富なのでかなり定番です。

フォントを用意したら、UnityのAssetsフォルダへドラッグ&ドロップします。

インポート自体はこれだけでOKです。

ただし、この時点ではまだTextMeshProで日本語表示はできません。

ここで「入れたのに□のまま!」となる人が本当に多いです。

理由は、先ほど触れた通り、TextMeshProが必要としているのは「フォントファイル」ではなく「TMP Font Asset」だからですね。

次に、そのFont Assetを作成していきます。

Custom Charactersで文字リストを入れる

日本語Font Assetを作る時に大事なのが、「どの文字を含めるか」です。

TextMeshProでは、必要な文字だけをAtlasへ登録する仕組みになっています。

つまり、Character Listに入っていない文字は表示できません。

初心者の方は、まず Custom Characters を使う方法がおすすめです。

Font Asset CreatorでCharacter Setを開くと、いくつか選択肢がありますが、日本語ではCustom Charactersが扱いやすいです。

理由は、日本語は文字数が非常に多いからです。

英語なら数十文字程度ですが、日本語はひらがな・カタカナ・漢字・記号を含めると、一気に数千文字になります。

なので、最初から全部入れようとすると、Atlasサイズが巨大になりやすいんですね。

たとえば、こんな使い分けが実践的です。

用途おすすめ設定
タイトル画面・固定UI必要文字だけ登録
会話ゲーム使用予定文字をまとめて登録
ユーザー入力ありDynamic Fontも検討

特に注意したいのが、記号類です。

よくあるのがこんなパターンです。

  • 「!」は出るのに「!」が出ない
  • 「-」は出るのに「〜」が出ない
  • 「高」は出るのに「髙」が出ない

これ、かなり頻出です。

会話文やUI文言がある程度決まっているなら、実際のテキストをまとめてCharacter Listへ入れるのが安全です。

あとから「この記号だけ足りない!」と修正する回数がかなり減ります。


Font Asset Creatorの基本設定

日本語フォントをインポートできたら、次はTextMeshPro用のFont Assetを作成します。

まずはUnity上部メニューから、次を開きます。

  • Window
  • TextMeshPro
  • Font Asset Creator

すると、Font Asset Creatorウィンドウが表示されます。

ここで設定する項目が少し多いので、最初は「どれを触ればいいの…?」となりやすいです。

ただ、日本語表示目的なら、まずは次の設定を基準にすると安定しやすいです。

項目おすすめ設定
Source Font File日本語フォントを指定
Sampling Point SizeAuto Sizing
Padding5前後
Packing MethodFast または Optimum
Atlas Resolution4096 x 4096
Character SetCustom Characters
Render ModeSDFAA

特に重要なのが、Atlas ResolutionCharacter Set です。

Atlas Resolutionは、文字画像を保存するテクスチャサイズです。

ここが小さすぎると、漢字が潰れたり、文字がぼやけたりします。

逆に大きすぎても安心とは限りません。

たとえば8192 x 8192は大量文字に強いですが、モバイル端末では負荷や互換性の問題が出る場合もあります。

なので、まずは4096 x 4096くらいから始めるのが扱いやすいです。

次にCharacter Setで「Custom Characters」を選び、表示したい日本語リストを入力します。

ここを空のまま生成すると、「Font Assetは作れたのに日本語が出ない」という状態になりやすいです。

文字リストを入力できたら、Generate Font Atlas をクリックします。

文字数が多い場合は、生成に少し時間がかかります。

私も初めて常用漢字を大量に入れた時、「Unity固まった?」と思いましたが、数分待ったら普通に終わりました🙂

生成が完了したら、最後に Save または Save As… を押して保存します。

この保存を忘れると、設定したFont Assetが消えてしまうので注意してください。

特に初心者の方は、「Generateしただけ」で安心して閉じてしまうことが意外と多いです。


TextMeshProオブジェクトに適用する

Font Assetを作成できたら、最後にTextMeshProオブジェクトへ適用します。

ここを忘れると、せっかく日本語Font Assetを作っても、画面上ではまだ「□」のままです。

まずは、Hierarchy上のTextMeshProオブジェクトを選択してください。

するとInspector内に、Font Asset という項目があります。

ここへ、先ほど作成した日本語対応のFont Assetをドラッグ&ドロップします。

これだけで、日本語が正常表示されるケースがかなり多いです。

もしここが「LiberationSans SDF」のままになっていたら、日本語は表示できません。

特にPrefabを使っている場合は注意です。

シーン上では設定したつもりでも、Prefab側に古いFont Assetが残っていると、再生時に戻ってしまうことがあります。

私も以前、UIを全部直したのに、ゲーム再起動したらまた□に戻っていて「えっ!?」となりました。
原因はPrefab側のFont Asset更新漏れでした。

複数のTextMeshProオブジェクトを使う場合は、毎回手動設定するより、TMP Settings側でデフォルトFont Assetを設定しておくと管理しやすいです。

設定場所は次の通りです。

  • Edit
  • Project Settings
  • TextMeshPro
  • Default Font Asset

ここへ日本語Font Assetを設定しておくと、新しく作るTextMeshProでも日本語対応フォントが最初から使われやすくなります。

UI量が増えるゲームではかなり便利です。

TextMeshProの基本操作自体を復習したい場合は、こちらの記事も参考になります。

ここまで設定できたら、まずは「こんにちは」「ゲーム開始」「設定」など、実際によく使う日本語を入力して表示確認してみてください。

もし一部だけ□になる場合は、次のセクションで扱う「Character List不足」の可能性が高いです。




一部の文字だけ表示されない原因

Character Listに文字が入っていない

「ひらがなは表示されるのに、一部の漢字だけ□になる」

この場合は、フォント自体ではなく、Font Assetに登録された文字不足の可能性が高いです。

TextMeshProは、Character Listに登録された文字だけをAtlasへ生成します。

つまり、フォントファイル側に漢字が存在していても、Font Asset側へ追加されていなければ表示できません。

特に日本語は、見た目が似ていても別文字扱いになるケースがあります。

よくある例はこちらです。

  • 「高」は表示されるが「髙」は□になる
  • 「-」は表示されるが「〜」は□になる
  • 「!」は表示されるが「!」は□になる
  • 「…」は表示されるが「…」は□になる

このあたりは会話ゲームやUI制作でかなり遭遇しやすいです。

私もADVゲームのUIを作っていた時、「……」だけ全部□になっていて、原因に気づくまで少し時間がかかりました🙂

対処方法はシンプルです。

  1. Font Asset Creatorを開く
  2. Character Listへ不足文字を追加する
  3. Generate Font Atlasを再実行する
  4. 保存して反映する

特に注意したいのが、あとから会話文を追加した時です。

最初は問題なくても、新しいシナリオを入れた瞬間に突然□が出ることがあります。

これは「新しく追加した文字がFont Assetに存在しない」だけなので、慌てなくて大丈夫です。

再発防止したい場合は、実際にゲームで使うテキストをまとめてCharacter Listへ入れておくのがおすすめです。

たとえば、こんなものは最初から追加しておくと安心です。

  • 会話文
  • UIテキスト
  • アイテム名
  • 記号(♪、★、〜、… など)
  • 数字・全角記号

逆に、「日本語全部を入れておけば安心」と考えて大量文字を詰め込みすぎると、Atlasサイズが肥大化して別問題につながる場合もあります。

まずは「ゲーム内で本当に使う文字」を基準にする方が、管理もしやすく、表示品質も安定しやすいです。


Dynamic Font Assetを使うべき場面

一部の文字不足が面倒だからといって、「じゃあ全部Dynamicにすればいいのでは?」と思うことがあります。

たしかにDynamic Font Assetは便利です。

必要になった文字を実行時に追加できるので、あらかじめCharacter Listへ全部登録しなくても動きます。

特に次のようなケースでは相性が良いです。

  • ユーザー名入力
  • チャット機能
  • 外部CSV・JSON読み込み
  • 翻訳対応
  • DLCやアップデートで文章が増えるゲーム

固定テキストだけではない場合、Dynamicはかなり助かります。

ただし、「Dynamic=万能」ではありません。

便利な反面、実行時に文字を追加していくので、メモリ使用量やAtlas管理が複雑になりやすいです。

特にモバイル向けでは、文字追加が増えすぎるとAtlasが肥大化し、表示品質やパフォーマンスへ影響する場合があります。

なので、実際にはこんな使い分けが現実的です。

用途おすすめ
固定UI・固定会話Static Font Asset
ユーザー入力ありDynamic Font Asset
運営型ゲームDynamic + Fallback

私なら、まず固定テキスト中心ならStaticで作ります。

理由は、管理しやすく、表示崩れも起きにくいからです。

逆に、ユーザー入力がある場合は、Staticだけだと後から文字不足が発生しやすくなります。

たとえばプレイヤー名入力で「髙橋」が□になると、かなり悲しい空気になりますよね。

そういうケースではDynamicを検討する価値があります。

また、Dynamic Font Assetを使う場合でも、「全部任せ」で放置するより、Fallback Font Assetと組み合わせて整理しておく方が安全です。

特に日本語は文字数が多いので、長期運用するゲームほどFont Asset設計が重要になってきます。




文字化け・ぼやけ・実機不具合の対処法

文字化けと□表示は原因が違うことがある

TextMeshProの日本語問題は、「全部同じ原因」に見えて実はかなり違います。

特に混同しやすいのが、「□表示」と「文字化け」です。

まず、□表示はかなりの確率でGlyph不足です。

つまり、Font Asset内にその文字が存在していません。

一方で、こんな症状は別原因の可能性があります。

  • 意味不明な記号になる
  • 文字列が崩れる
  • 日本語だけ別の文字へ置き換わる
  • CSV読み込み時だけ表示がおかしい

この場合は、Font Assetではなく、文字コード(エンコード)の問題も疑います。

特に外部CSVやテキストファイルを使う場合、UTF-8以外で保存されていると、日本語が崩れることがあります。

たとえばShift-JIS系ファイルをそのまま扱うと、TextMeshPro以前に文字列自体が壊れてしまうケースがあります。

なので、症状ごとに切り分けるのが大切です。

症状原因候補
□になるGlyph不足
一部漢字だけ□Character List不足
意味不明な文字列エンコード問題
CSVだけ崩れる外部ファイル形式

特に「文字化け=全部フォント問題」と思い込むと、延々とFont Assetを作り直してしまいやすいです。

私も昔、CSVの保存形式が原因だったのに、3回くらいFont Atlasを作り直したことがあります🙂

もし外部CSVやテキストを読み込んでいる場合は、こちらの記事も参考になります。

まずは「□なのか」「文字化けなのか」を切り分けるだけでも、かなり原因を追いやすくなります。


文字がぼやける時はAtlasを見直す

日本語表示自体は成功したのに、「なんだか文字が汚い…」となることがあります。

特に漢字は情報量が多いので、Atlas設定が合っていないと、かなりぼやけやすいです。

よくある症状はこちらです。

  • 小さい文字が潰れる
  • 漢字がにじむ
  • アウトラインがガタガタ
  • UIだけ妙に読みにくい

この場合は、まずAtlas Resolutionを確認してみてください。

TextMeshProでは、文字をAtlasという1枚のテクスチャへまとめて保存しています。

つまり、1枚のAtlasへ大量の日本語を詰め込みすぎると、1文字あたりの解像度が下がってしまうんですね。

特に日本語は文字数が多いので、英語設定の感覚で作ると崩れやすいです。

たとえば、次のようなケースはかなり発生しやすいです。

状況起きやすい問題
大量漢字 + 2048 Atlas文字潰れ
Padding不足アウトライン崩れ
極小UIフォントにじみ・視認性低下

改善したい場合は、まず次を試してみるのがおすすめです。

  1. Atlas Resolutionを上げる
  2. 不要文字を減らす
  3. Paddingを少し増やす
  4. Sampling Point Sizeを見直す

ただし、Atlas Resolutionは「高ければ高いほど正解」ではありません。

8192にすると高品質になる場合もありますが、モバイル端末では負荷や互換性の問題が出るケースもあります。

なので、まずは4096を基準にして、必要なら段階的に調整する方が安全です。

私の場合、会話ゲームでは「よく使う文字だけ」に絞った4096 Atlasが、一番バランス良く安定しやすかったです。

逆に「全部入り日本語Font Asset」を作った時は、Atlasがかなり重くなって、UI表示品質も少し崩れました。

特にスマホ向けでは、文字数を整理する方が効果的なことも多いです。

「Atlasを巨大化して押し切る」より、「必要文字を管理する」方が、結果的に見た目も安定しやすくなります。


実機だけ表示がおかしい時の確認点

Editorでは正常なのに、スマホ実機やビルド後だけ文字表示がおかしくなることがあります。

これはUnity初心者の頃だとかなり焦ります。

「Editorで動いてたのに!」となるやつですね🙂

ただ、TextMeshProでは実機側の制約が影響しているケースも意外と多いです。

まず確認したいのが、Atlas Resolutionが大きすぎないかです。

特に日本語Font Assetを作る時、「全部の漢字を高品質で入れたい!」と思って8192 x 8192を選びたくなることがあります。

もちろん環境によっては問題なく動く場合もあります。

ただ、端末によっては巨大テクスチャが扱いづらく、表示崩れや読み込み問題につながるケースがあります。

なので、モバイル向けではまず4096 x 4096前後から試す方が安定しやすいです。

次に確認したいのが、「実際に使う文字」が実機でちゃんと含まれているかです。

Editorでは偶然Dynamic生成されていても、ビルド環境では不足文字が発生するケースがあります。

特に確認しておきたいのはこちらです。

  • 会話文
  • タイトルUI
  • 設定画面
  • 記号(♪、★、〜、…)
  • プレイヤー名

このあたりは、実機でまとめて確認しておくと安心です。

また、一部環境ではTMP関連の警告が表示に影響するケースも報告されています。

たとえば「The character used for Underline is not available…」系の警告ですね。

必ずしもすべての環境で問題になるわけではありませんが、実機表示で不自然な挙動がある場合は、TMP Settings側も確認してみる価値があります。

特にiOS系は、Editorとの差異が出やすいことがあります。

あと、TextMeshProだけではなく、ビルド環境そのものが原因になる場合もあります。

もし「実機だけ全体的に挙動がおかしい」という場合は、こちらの記事も参考になります。

実機トラブルは「TMPだけ」を疑うより、

  • Font Asset設定
  • Atlasサイズ
  • 端末制約
  • ビルド環境

この4つをセットで確認すると、かなり原因を追いやすくなります。




3分でできるTMP日本語チェックリスト

日本語が□になる時の確認順

TextMeshProの日本語問題は、確認順を決めておくとかなり早く解決できます。

逆に、あちこち設定を触り始めると、原因が分からなくなりやすいです。

私も昔、Font Assetを直しながらMaterial Presetまで触ってしまい、「何を変更したのか分からない状態」になったことがあります🙂

まずは、次の順番で確認してみてください。

  1. TextMeshProのFont Assetが「LiberationSans SDF」のままになっていないか
  2. 日本語対応フォントからTMP Font Assetを作成したか
  3. Character Setが「Custom Characters」になっているか
  4. 表示したい漢字・記号がCharacter Listへ入っているか
  5. Generate Font Atlas後にSaveしているか
  6. TextMeshProオブジェクトへ正しく適用したか
  7. Prefab側に古いFont Assetが残っていないか
  8. 実機でAtlas Resolutionが大きすぎないか
  9. 外部CSVやJSONならUTF-8保存になっているか

かなりの割合で、1〜6までで解決します。

特に多いのはこの2つです。

  • Font Assetを適用していない
  • Character List不足

「日本語全部が□」ならFont Asset未設定を疑いやすく、
「一部だけ□」なら不足文字を疑うと切り分けしやすいです。

また、Prefab化しているUIは見落としやすいポイントです。

Scene上で直したつもりでも、Prefab再読み込み時に戻ることがあります。

私なら、まず次の順番で見ます。

  1. Font Asset欄
  2. Character List
  3. 不足文字
  4. 実機差分

この順番だと、かなり効率良く原因を潰しやすいです。

特にTextMeshProは、「Unityの不具合」より「Font Asset設定ミス」の方が圧倒的に多いので、まずは設定周りから確認するのがおすすめです。




よくある誤解・注意点

日本語フォントを入れるだけでは直らない

TextMeshProでかなり多い勘違いが、「日本語フォントをAssetsへ入れれば表示される」というものです。

これは普通のフォント運用だと自然な感覚なので、最初は私も完全に同じ勘違いをしていました。

ただ、TextMeshProでは少し流れが違います。

必要なのは次の3段階です。

  1. 日本語フォントをインポートする
  2. TMP Font Assetを生成する
  3. TextMeshProオブジェクトへ適用する

どれか1つ欠けるだけでも、日本語は□になります。

特にFont Asset生成を飛ばしているケースはかなり多いです。

「フォントは入っているのに表示されない!」時は、まずTMP Font Asset化を疑ってみてください。

すべての日本語を入れるのが正解ではない

日本語Font Assetを作る時、「全部の漢字を入れておけば安心」と考えることがあります。

もちろん間違いではありません。

ただ、日本語は文字数が非常に多いので、全部入りにするとAtlasサイズが巨大化しやすいです。

すると、こんな問題が出ることがあります。

  • 文字がぼやける
  • Atlasが重くなる
  • モバイル実機で不安定になる
  • 生成時間が長くなる

特にUI中心ゲームでは、「必要文字だけ管理する」方が結果的に安定しやすいです。

私も以前、常用漢字を大量投入したFont Assetを作ったことがありますが、思った以上にAtlas管理が大変でした。

なので、まずはゲーム内で本当に使う文字を基準に考えるのがおすすめです。

WebGL文字化けは別原因もある

WebGLだけ日本語がおかしい場合、TextMeshPro以外の要因が混ざることがあります。

たとえば次のようなものです。

  • ブラウザ依存
  • 文字コード
  • ビルド設定
  • 読み込みタイミング

もちろん、TMP Font Asset不足が原因のケースもあります。

ただ、「PCビルドでは正常なのにWebGLだけ崩れる」場合は、WebGL固有問題も視野に入れた方が原因を追いやすいです。

WebGL側の日本語問題については、こちらで詳しくまとめています。

TextMeshProの日本語表示は、「フォントを入れたら終わり」ではなく、

  • Font Asset
  • Character List
  • Atlas設定
  • 実機環境

このあたりをセットで考えると、かなり安定しやすくなります。




TextMeshPro日本語表示のまとめ

まずはFont Asset不足を疑う

TextMeshProで日本語が□になる場合、まず最優先で確認したいのはFont Asset設定です。

特に多いのは、次のパターンでした。

  • 日本語対応フォントを適用していない
  • TMP Font Assetを作っていない
  • Character Listへ必要文字が入っていない

逆に言うと、この3つを整理できれば、かなりの確率で解決できます。

基本の流れをもう一度まとめると、こんな順番です。

  1. 日本語対応フォントを用意する
  2. Font Asset CreatorでTMP Font Assetを生成する
  3. Character Listへ必要文字を入れる
  4. TextMeshProオブジェクトへ適用する
  5. 不足文字があれば再生成する

特に日本語は文字数が多いので、「後から一部だけ□になる」はかなり起きやすいです。

なので、会話文やUIテキストを追加する運用なら、「どの文字を使うか」を管理する意識があると、後でかなりラクになります。

私も最初は「全部入りFont Asset」を作ろうとしていましたが、実際は“ゲーム内で使う文字を整理する”方が安定しやすかったです。

特にモバイル向けでは、Atlasサイズと表示品質のバランスも大事になってきます。

また、日本語表示が安定してきたら、次はテキスト演出を強化したくなることもあります。

会話UIやタイトル演出を強化したい場合は、TextMeshPro対応アセットを使うとかなり便利です。

Text Animator for Unity
✅アセットストアでチェックする

UI全体のフェード・移動・アニメーション演出を強化したい場合はこちらも便利です。

DOTween Pro
✅アセットストアでチェックする

TextMeshProは最初こそ少し独特ですが、Font Assetの仕組みを理解すると、日本語表示トラブルはかなり対処しやすくなります。

まずは「Font Assetに必要文字が入っているか」を確認するクセをつけると、原因特定がかなり早くなりますよ🙂


よくある質問(FAQ)

Q
Noto Sans JPを入れたのに□になるのはなぜ?
A

一番多い原因は、TextMeshPro用のFont Assetを作成していないことです。

Noto Sans JPをAssetsへ入れただけでは、日本語表示はまだできません。

TextMeshProでは、Font Asset Creatorを使ってTMP専用のFont Assetを生成し、それをTextMeshProオブジェクトへ設定する必要があります。

また、Font Asset欄が「LiberationSans SDF」のままになっているケースもかなり多いです。

まずはInspectorのFont Asset欄を確認してみてください。

Q
一部の漢字だけ表示されない時は?
A

その文字がCharacter Listへ入っていない可能性が高いです。

特に次の文字は漏れやすいです。

  • 旧字体
  • 異体字
  • 全角記号
  • 特殊記号

たとえば「高」は出るのに「髙」が出ない、というケースはかなりよくあります。

不足文字をCharacter Listへ追加し、Generate Font Atlasを再実行してみてください。

Q
Dynamic Font Assetにすれば全部解決する?
A

便利ですが、万能ではありません。

Dynamic Font Assetは、実行時に必要文字を追加できるので、ユーザー入力やチャット機能ではかなり役立ちます。

ただし、文字追加が増えるほどAtlas管理やメモリ使用量も大きくなります。

固定UIや固定会話中心のゲームなら、Static Font Assetで必要文字を管理する方が安定しやすい場合も多いです。

まずは用途ごとに使い分けるのがおすすめです。

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク