【Unity】使われる文字がフォントアセット(TextMeshPro)に含まれているかチェックする

  • URLをコピーしました!
目次

はじめに

TextMeshPro の「TMP Settings Default font asset」に含まれている文字かどうかチェックする時のサンプルコードです。

  • 例えばこんな時に使えます
    • 日本語フォントを使うプロジェクト
    • ユーザー名を自由に記入してもらう
    • 対応は第一水準漢字まで、第二水準漢字は未対応
    • ユーザーが第二水準漢字を使おうとしたのでエラーを返す

…など

サンプルコード

using UnityEngine;
using TMPro;

void Start()
{
		Debug.Log($"アセット登録: 林檎 / {IsDisplayable("林檎")}");
		Debug.Log($"アセット登録: 棗 / {IsDisplayable("棗")}");
}

bool IsDisplayable(string str)
{
		//1文字ずつ列挙
		for(int i = 0; i < str.Length; i++)
		{
			//「TMP Settings」の「Default font asset」に含まれている文字かチェック
			if(!TMP_Settings.defaultFontAsset.HasCharacter(str[i]))
			{
				//未対応
				return false;
			}
		}
		//対応
		return true;
}

コード解説。見たままですが「りんご / 林檎(第一水準漢字)」と「なつめ / 棗(第二水準漢字)」が、それぞれフォントアセットに含まれているかどうかを「if(!TMP_Settings.defaultFontAsset.HasCharacter(str[i]))」部分で判定してbool値を返しています。

【結果】

参考

技術と趣味の亜空間
【TextMesh Pro】Unityで文字化けする箇所を除外する方法 - 技術と趣味の亜空間 概要 UnityでTextMesh Proのフォントアセットとスプライトアセットに未登録の文字列だけを除外するコードを作成しました。 上のトップ画像ではTextMehs Proデフォルトで入...

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次