TextMeshProで日本語フォントを表示
トップへ
参考ページ
やりたいこと
Unityのバージョンが上がったことで、既存のUIであるTextは古いものとなりText Mesh Proなるプロ仕様(?)のテキスト表示エリアが追加されていました。
で、それを使うと既存のTextとは違って日本語(2バイト文字)が□に化けてしまうのでそれをどうにかする方法です。
ちなみに導入のメリットではっきりわかるのは、既存のTextよりくっきり表示されるようになることです。
手順
フォントのマップファイル的なものを自力で生成して、それをTextMeshPro側で指定する。
-
任意の日本語フォントファイルをAssetsに入れる(日本語フォントファイルは検索するなりして入手しましょう)
拡張子は .otf .ttf .ttc など
-
マップ生成用の「日本語文字コード範囲指定」ファイルを入手
https://gist.githubusercontent.com/kgsi/ed2f1c5696a2211c1fd1e1e198c96ee4/raw/118bb818cffe159eb4e906f82980465cd0b0021e/japanese_full.txt
-
メニューバー>Window>TextMeshPro>FontAssetCreatorを開く
-
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.でダウンロードしたテキストの中身を全部ペースト
-
Generate Font Aliasボタンを押すと生成開始
-
生成完了したらSaveを押して、Assetsフォルダ等に保存
-
TextMeshProを配置
-
Inspectorの「Font Asset」で生成したファイルを選べるはずなのでそれを選ぶ
補足
ちなみにTextMeshProをスクリプトから呼ぶ場合、TMProパッケージのTextMeshProUGUIクラスを使います。
また、TextMeshProの表示優先度(Sorting Layer)はCanvas側で指定が必要です。