UnityでUIを作成している際、TextMeshPro(TMPro)に「❤️」などの絵文字を入力したら、文字化けして四角(□)になってしまったことはありませんか?
コンソールには以下のような警告(Warning)が表示されます。
The character with Unicode value \u2764 was not found in the [LiberationSans SDF] font asset or any potential fallbacks. It was replaced by Unicode character \u25A1 in text object [HPText].
今回は、このエラーが発生する原因と、最も手軽に解決する方法から根本的な解決策までを分かりやすく解説します!
エラーの原因は?なぜ「❤️」が四角(□)になるのか
このエラーは、通称「豆腐現象」と呼ばれる文字不足のバグです。
TextMeshProのデフォルトフォントである LiberationSans や、一般的なフォントアセットには、「❤️(Unicode: \u2764)」のようなカラー絵文字のデータが含まれていません。
フォント内に「この文字の見た目(データ)」が存在しないため、TextMeshProが代わりに「文字がないよ」を意味する四角形(□ / Unicode: \u25A1)を表示し、警告を出しているのが原因です。
【解決策1】一番手っ取り早い!文字を「♡」に変更する
フォントの設定をいじりたくない、今すぐ直したいという場合は、文字をカラー絵文字の「❤️」から特殊文字の「♡」や「♥」に変更するのが一番スマートです。
- ❌ 映らない文字:
❤️(Unicode:\u2764/ カラー絵文字扱い) - ⭕ 映る文字:
♡(Unicode:\u2661)や♥(Unicode:\u2665)
実は、「♡」や「♥」のような記号は、デフォルトの LiberationSans や一般的な日本語フォントに最初からデータが含まれていることが多いです。
テキストを ♡ に差し替えるだけで、エラーは一瞬で消え去ります。
【解決策2】どうしても「❤️」を使いたい場合の対処法
デザインの都合上、どうしてもカラー絵文字の「❤️」を表示したい場合は、以下のいずれかの方法を試してください。
方法A:フォントアセットに文字を追加する
Window>TextMeshPro>Font Asset Creatorを開きます。- Character Set を
Custom Charactersに変更します。 - Custom Character List に、表示したい文字(
❤️)を直接コピペするか、Unicode(2764)を入力します。 Generate Font Atlasをクリックしてベイクし、保存します。
方法B:フォールバック(Fallback)を設定する
「普段の文字はデフォルトのままでいいけど、絵文字だけ別フォントから引っ張りたい」という場合はフォールバックが便利です。
- 絵文字が含まれているフォントアセット(例:Windowsの
Segoe UI Emojiなどから作成したもの)を用意します。 - メインで使用しているフォントアセット(
LiberationSansなど)のインスペクターを開きます。 Fallback Font Assetsのリストに、1で用意した絵文字フォントを登録します。
これで、メインフォントに「❤️」がなくても、自動的にフォールバック先のフォントからデータを探して表示してくれます。
まとめ:用途に合わせて使い分けよう!
TextMeshProで \u2764 (ハート)のエラーが出たときの対策をまとめます。
- 手軽さ重視: 文字を
♡や♥に変える(おすすめ!) - デザイン重視: フォントアセットに
❤️を追加するか、フォールバックを設定する
ゲームのUIに合わせて、最適な方法を選んでみてくださいね。


コメント