3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Unity】TextMeshPro の Fallback を言語切替時に Addressables から読み込むパッケージの紹介

Last updated at Posted at 2023-05-05

概要

上記のきゅぶんずさんの記事に習ってフォントの動的読み込みを実装する際、以下のようなクラスが有ったら汎用的に利用できそうだと思ったので作ってみました。

追記(2024/04/08)

上記のクラスを改修してパッケージにしました。

TMPro_LocaleFontLoader.json
https://github.com/yamara-mh/TMPro_LocaleFontLoader.git?path=Assets/TMPro_LocaleFontLoader

これより先の文章は、改修前の内容になります。

使い方

  1. UniRx, UniTask, Addressables, Localization を導入します
  2. FallbackFontRemoverEditor, FallbackFontLoader, FallbackFontLoaderController を導入します
  3. FallbackFontAssetTable を持つ TMP_FontAsset に対して FallbackFontLoader の生成と設定を行います
  4. 開始シーンのシングルトンオブジェクトに FallbackFontLoaderController を付けます
  5. FallbackFontLoaderController に常時使用するフォントを登録します
  6. フォントの読み込みが完了してからタイトル画面に遷移するような実装を行います

各種説明

FallbackFontLoader

生成はCreate/ScriptableObject/Create FallbackFontLoaderから行えます。

image.png

項目 説明
BaseFont 基本フォント
DynamicRef
(オプション)
ダイナミックフォントの参照
LanguageRefs
(オプション)
各言語に対応したフォントの参照
アドレス末尾に言語コードが必要です。
日本語フォントのアドレスの例:FontName ja
Refected in Base Font BaseFont に設定されているフォントの fallbackFontAssetTable に LocalizationRefs のフォントを反映するボタンです。
反映する言語は Localization Settings の Project Locale Identifier に設定されている言語です。
Dynamic Font は変更防止のため反映しません。
IsLoaded 読込完了を判定するフラグ
static IsLoadedDefaultFonts LoadOnStartup が有効である全フォントの読込完了を判定するフラグ

Fallback を持つフォントに対応した FallbackFontLoader が存在しない際は、Play Mode 起動時とビルド時にエラーが出るようにしています(設定漏れ対策)。

FallbackFontRemoverEditor

FallbackFontRemoverEditor は、空にした FallbackFontAssetTable の数をログに出力します。これは Fallback を空にする挙動を明確にして混乱を避けるためです。
また FallbackFontRemoverEditor は、UNITY_EDITOR シンボルで囲んでいるので Editor フォルダに置く必要はありません。

FallbackFontLoaderController

image.png

項目 説明
LinkType Instance : Start() で読込、OnDestroy() で破棄が行われます
Active : OnEnable() で読込、OnDisable() で破棄が行われます
Manual : 手動で読込と破棄を行う必要があります
UpdateAllTextOnLoad フォント読込完了後、実体を持つ TMP_Text を全取得し、フォント名が同じ TMP_Text の描画を更新して最新のフォントを反映します。
FallbackFontLoaders Fallback を読み込む FallbackFontLoader
OnLoadedEvent 読込完了時に実行されるイベント
OnUnloadedEvent 破棄完了時に実行されるイベント
IsLoaded 読込完了を判定するフラグ
OnLoaded 読込完了時に発行される Observable
OnUnloaded 破棄完了時に発行される Observable
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?