TextMeshProで日本語フォントを表示

トップへ

参考ページ

やりたいこと

Unityのバージョンが上がったことで、既存のUIであるTextは古いものとなりText Mesh Proなるプロ仕様(?)のテキスト表示エリアが追加されていました。
で、それを使うと既存のTextとは違って日本語(2バイト文字)が□に化けてしまうのでそれをどうにかする方法です。

ちなみに導入のメリットではっきりわかるのは、既存のTextよりくっきり表示されるようになることです。

手順

フォントのマップファイル的なものを自力で生成して、それをTextMeshPro側で指定する。

  1. 任意の日本語フォントファイルをAssetsに入れる(日本語フォントファイルは検索するなりして入手しましょう)
    拡張子は .otf .ttf .ttc など
  2. マップ生成用の「日本語文字コード範囲指定」ファイルを入手
    https://gist.githubusercontent.com/kgsi/ed2f1c5696a2211c1fd1e1e198c96ee4/raw/118bb818cffe159eb4e906f82980465cd0b0021e/japanese_full.txt
  3. メニューバー>Window>TextMeshPro>FontAssetCreatorを開く
  4. Source Font File:Assetsに入れたファイルをドラッグドロップ
    Sampling Point Size:Auto Sizing(デフォルト)
    Padding:5(デフォルト)
    Packing Method:Fast(デフォルト)
    Atlas Resolution:4096×4096(うまくいかなかったらほかの値を試す)
    Character Set:Custom Chjaracters
    Custom Character Listに手順2.でダウンロードしたテキストの中身を全部ペースト
  5. Generate Font Aliasボタンを押すと生成開始
  6. 生成完了したらSaveを押して、Assetsフォルダ等に保存
  7. TextMeshProを配置
  8. Inspectorの「Font Asset」で生成したファイルを選べるはずなのでそれを選ぶ

補足

ちなみにTextMeshProをスクリプトから呼ぶ場合、TMProパッケージのTextMeshProUGUIクラスを使います。

また、TextMeshProの表示優先度(Sorting Layer)はCanvas側で指定が必要です。