Unityに関連する記事です

 UnityのTextMeshProは、異なるフォントが使用できるFallback Asset Fontという機能を提供しています。

 Fallback Asset Fontは、テキストで使用されるフォントが特定の文字をサポートしていない場合に、別のフォントにフォールバックする仕組みです。
例えば、日本語のフォントを用意し、その中ではサポートしていない韓国語やスペイン語といったフォントを
1つのマテリアルに入れるのではなく、異なるフォントのマテリアルを作成し、アサインして利用する機能です。
Unity 公式マニュアル
Fallback font assets
https://docs.unity3d.com/Packages/com.unity.textme...


 この Fallback Asset Font の機能を利用することにより、フォントの差し替え(アサイン変更)を行う必要なく、
複数の言語の表示に対応することが可能になります。

 なお、言語のローカライズ対応については、下記の記事を参考にして実装にチャレンジしてみてください。

  => ローカライズ対応の実装例
    ローカライズ対応の実装例
    ローカライズ対応の実装例



1.Fallback Asset Font 機能の活用


 フォントを自動的にフォールバックしてくれるため、ローカライズ対応が可能です。

 複数のフォントを用意して、各言語ごとにフォントを切り替える方法として、
アサインしているフォントを切り替える方法もありますが、Fallback Asset Font 機能を活用することで柔軟なローカライズ対応が出来ます。



2.無料フォントの入手


 テキストが魅力的で読みやすいものになるためには、適切なフォントの選択が重要です。
インターネット上には無料で利用できる多くのフォントが存在します。

 フリーフォントを利用する場合、ライセンスに留意したフォントの選択が大切です。
また、読みやすさとデザインのバランスにも注意しましょう。カッコいいデザインであっても
読みにくくて何を伝えたいのかわからないようなフォントは避けるべきです。

 有名な無料フォントの1つに Google Fontsがあります。
Google Fontsからのフォントの探索とダウンロードし、ライセンスの確認をして利用しましょう。


3.カスタムのCharacterSetの用意


 TextMeshProは、様々な特殊文字やアイコンを表示するために、カスタムのCharacterSetの使用が可能です。
テキストに独自のシンボルやアイコンを組み込む方法に焦点を当てます。

 文字のカスタムにより、ゲームやテーマに合ったアイコンの追加、特殊文字や絵文字の使用が出来ます。

 日本語(平仮名・カタカナ・漢字)を用いる場合、下記のサイトを参考にしてください。
日本語専用のファイルに文字を登録しておき、そのファイルを指定する方法(Characters from File)が扱いやすいです。

Qiita @thorikawa(Takahiro Horikawa) 様
UnityのText Mesh Proアセットで日本語を使うときの手順

https://qiita.com/thorikawa/items/03b65b75fa9461b5...
Github Gist
kgsi/japanese_full.txt

https://gist.github.com/kgsi/ed2f1c5696a2211c1fd1e...


4.Font Asset Creatorの利用方法


 Unityには、TextMeshPro用のFont Asset Creatorが用意されています。
このツールを活用することで、フォントのカスタマイズや最適化が行えます。








 作成したフォントは出力結果とプレビューを確認して、正常にフォントが作成されていることをチェックしてください。


5.作成されたフォントに別のフォントをFallback Asset Fontにアサインする方法


 Fallback Asset Fontは、特定のフォントがサポートしていない文字に対するフォールバック機能を提供します。
 
 複数のフォントを作成しておくことにより、1つ1つのフォントのサイズを小さく抑えることが出来ます。
また、各言語ごとのフォントを作成しておくことで管理もしやすくなります。

 作成したフォントにFallbackとして使用するフォントの指定し、アサインします。
こちらの例の場合、日本語のフォントに対して、Fallback Asset Fontの機能を適用するため、
韓国語のフォントをアサインして利用しています。











 Fallback Asset Font に複数のフォントをアサインしておくことにより、
主となる言語以外のフォントについても自動的に対応が可能になります。

 この例であれば、日本語のフォントを標準で表示する他、
フォント変更なしで韓国語のフォントについても表示できるようになります。


6.サンプルコード


 動的に Fallback Asset Font をアサインする方法です。

using TMPro;
using UnityEngine;

public class TextMeshProExample : MonoBehaviour
{
    public TMP_Text textMeshPro;
    public Font fallbackFont;

    void Start()
    {
        // TMP_Textコンポーネントが存在するか確認
        if (textMeshPro == null)
        {
            Debug.LogError("TMP_Text component not found. Please assign the TMP_Text component to the script.");
            return;
        }

        // Fallback Fontを設定
        if (fallbackFont != null)
        {
            // Fallback Fontを設定
            textMeshPro.font = fallbackFont;

            // Fallback Fontが含む文字セットを指定
            textMeshPro.fontAsset.fallbackFontAssetTable.Add(fallbackFont);
        }
        else
        {
            Debug.LogWarning("Fallback Font is not assigned. Please assign a Font to be used as a fallback.");
        }

        // テキストを設定
        textMeshPro.text = "Hello, World!";
    }
}


7.参考サイト


テラシュールブログ 様
【Unity】TextMeshProにFont FallbackとDynamic SDF Systemが追加、日本語が使いやすくなった。

https://tsubakit1.hateblo.jp/entry/2019/02/02/0607...
きゅぶろぐ 様
本当に使える!TextMeshProでの「日本語」「多言語」対応方法

https://blog.kyubuns.dev/entry/2021/02/06/001609
Qiita @kgsi(Shinichi Kogiso) 様
UnityのText Mesh Proでほぼ全ての日本語を表示させる

https://qiita.com/kgsi/items/08a1c78b3bee71136156

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます