lime雑記

ゲーム開発、その他雑記。

【Unity】Dear ImGuiの日本語フォント導入方法

この記事でのバージョン

Unity 2021.3.8f1
UImGui 4.1.1

概要

Dear ImGuiのUnityでの使用の際、デフォルトのフォントでは日本語を表示できません。

?になってしまう

日本語を表示できるようにするために、日本語に対応したフォントに変更する方法を解説します。

Dear ImGui自体の紹介や導入方法は以下の記事を参照。
limegame.hatenablog.com

フォント変更方法

1.フォントファイルの用意

日本語に対応したフォントファイルを用意します。
フォントは権利周りが複雑なので選び方については割愛しますが、
今回はGoogleのNotoSansJapaneseを使用します。
fonts.google.com

2.フォントファイルの配置

以下の場所にダウンロードしたフォントファイルを配置します。
Assets\StreamingAssets\

3.読み込み用関数の追加

MonoBehaviour継承のクラスに以下の関数を記述します。

public void InitializeFont(ImGuiIOPtr io) {
  string fontPath = $"{Application.streamingAssetsPath}/NotoSansJP-Regular.ttf";
  // フォントサイズは任意(今回は18)
  io.Fonts.AddFontFromFileTTF(fontPath, 18, null, io.Fonts.GetGlyphRangesJapanese());
}
4.読み込み用関数の呼び出し設定

先ほど記述した関数があるコンポーネントをシーンのどこかに配置し、ImGui導入時にアタッチしているUImGuiコンポーネントのFontCustomInitializerにその関数を登録します。

上記の例では同時にアタッチしているImGuiManagerクラスにInitializeFont関数を記述し、それをFontCustomInitializerに指定しています。

結果

これで日本語が表示できるようになります。