facebook twitter hatena line email

「Unity/TMPro/日本語対応」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(日本語メモリ圧縮)
 
(同じ利用者による、間の16版が非表示)
行2: 行2:
 
==日本語へ==
 
==日本語へ==
 
*UI/TextMeshPro追加。
 
*UI/TextMeshPro追加。
*Import TMP Essentialsを追加
+
*Import TMP Essential Resourcesを追加(Unityメインメニュー/Window/TextMeshProから)
 
*(サンプルが必要であれば)Import TMP Example & Extrasも入れる
 
*(サンプルが必要であれば)Import TMP Example & Extrasも入れる
 
*Assetsの下に、TextMeshProのディレクトリができることを確認。
 
*Assetsの下に、TextMeshProのディレクトリができることを確認。
行18: 行18:
 
</pre>
 
</pre>
 
*CustomCharacterListに https://gist.github.com/kgsi/ed2f1c5696a2211c1fd1e1e198c96ee4?h=1 の文字を追加
 
*CustomCharacterListに https://gist.github.com/kgsi/ed2f1c5696a2211c1fd1e1e198c96ee4?h=1 の文字を追加
*GenerateFontAtlasボタンを押すと、Atlasファイルができるので、Assets/Fontsの下へ保存。
+
*GenerateFontAtlasボタンを押したに、下の方に隠れてるSaveボタンを押すと、Atlasファイルができるので、Assets/Fontsの下へ保存。
 
*最後に、TextMeshProのFontAssetに、先程作ったAtlasファイル(NotoSansJP-Regular SDF)を選択。
 
*最後に、TextMeshProのFontAssetに、先程作ったAtlasファイル(NotoSansJP-Regular SDF)を選択。
  
行29: 行29:
 
*CharacterTable
 
*CharacterTable
 
*GlyphTable
 
*GlyphTable
 +
 +
==フォントで足りないフォントを追加==
 +
FallbackFontを使う。
 +
 +
やり方としては、フォントに設定したSDFのInspectorのFallbackFontAssetsのListに、追加したいSDKを追加する
 +
 +
参考:https://kan-kikuchi.hatenablog.com/entry/TextMeshPro
  
 
==自動で文字列をベイクさせる==
 
==自動で文字列をベイクさせる==
行59: 行66:
  
 
参考:https://teratail.com/questions/309876
 
参考:https://teratail.com/questions/309876
 +
 +
==WebGLの入力欄を日本語対応==
 +
https://github.com/kou-yeung/WebGLInput/releases
 +
からWebGLInput.unitypackageをDLして、InputField (TMP)のオブジェクトのInspectorからAddComponentし、WebGLInputを追加すれば、できた。
 +
 +
参考:https://sorceryforce.net/cs/tips/unity-ui-webgl-input
 +
 +
==ポップなフォント==
 +
けいおんフォント
 +
http://font.sumomo.ne.jp/font_1.html
 +
 +
==■文字化け対応==
 +
□ではなく、■で文字化けする場合。tabletなど、古い端末で起こる。
 +
<pre>
 +
SamplingPointSizeをCustomSize:40へ
 +
Paddingを5へ
 +
PackingMethodをFastへ
 +
AtlasResolutinを4096x4096へ
 +
CharacterSetをCustomCharactersへ
 +
SelectFontAssetをLiberationSansSDFへ
 +
</pre>
 +
の条件で、修正できた。
 +
 +
参考:https://hirokuma.blog/?p=2381#toc1
 +
 +
==日本語メモリ圧縮==
 +
MemoryProfilerで確認すると、32MBも消費してたので、
 +
 +
日本語は、JIS第1水準漢字だけにすると良いかも。
 +
https://www.pre-practice.net/2018/03/jis1.html
 +
 +
他条件は、以下のようにすればよいかも。
 +
<pre>
 +
SamplingPointSizeを、CustomSize:29
 +
Padding:3
 +
PackingMethod:Fast
 +
AtlasResolution:2048x2048
 +
</pre>
 +
 +
==SDFファイルのCustomCharacterListを表示==
 +
#Unityメイン/Windows/TextMeshPro/FontAssetCreatorを開く
 +
#SelectFontAssetにSDFファイルを追加
 +
#CharacterSetがHexになってたら、CustomCharactersへ
 +
すると、CustomCharacterListに、そのファイルに含まれてる文字列が、出てくる。
 +
 +
===CustomCharacterList文字列保存方法===
 +
#FontAssetCreatorで、GenerateFontAtlasを押し、Saveボタンを押し、
 +
#SDFファイルを作成する。
 +
すると、CustomCharacterListの文字列が保存される。文字列の順序は、整理される。

2024年4月16日 (火) 02:47時点における最新版

日本語へ

  • UI/TextMeshPro追加。
  • Import TMP Essential Resourcesを追加(Unityメインメニュー/Window/TextMeshProから)
  • (サンプルが必要であれば)Import TMP Example & Extrasも入れる
  • Assetsの下に、TextMeshProのディレクトリができることを確認。
  • Googleフォントから、好きなものをDL。https://fonts.google.com/ (とりあえず、NotoSansJapaneseをDL)
  • Assets/Fontsを作ってその中に、NotoSansJP-Regular.otfを追加。
  • Unityメイン/Windows/TextMeshPro/FontAssetCreatorを開いて、FontSourceに先程のファイルをドラッグ。
  • 以下のように設定
SamplingPointSizeをCustomSize:48へ
Paddingを5へ
PackingMethodをFastへ
AtlasResolutinを8192x8192へ
CharacterSetをCustomCharactersへ
SelectFontAssetをLiberationSansSDFへ
  • CustomCharacterListに https://gist.github.com/kgsi/ed2f1c5696a2211c1fd1e1e198c96ee4?h=1 の文字を追加
  • GenerateFontAtlasボタンを押したに、下の方に隠れてるSaveボタンを押すと、Atlasファイルができるので、Assets/Fontsの下へ保存。
  • 最後に、TextMeshProのFontAssetに、先程作ったAtlasファイル(NotoSansJP-Regular SDF)を選択。

参考:https://taidanahibi.com/unity/text-mesh-pro/

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

取り込んだ文字列について

SDFファイルのInspectorの以下項目にベイクされた文字列が追加されてる。

  • CharacterTable
  • GlyphTable

フォントで足りないフォントを追加

FallbackFontを使う。

やり方としては、フォントに設定したSDFのInspectorのFallbackFontAssetsのListに、追加したいSDKを追加する

参考:https://kan-kikuchi.hatenablog.com/entry/TextMeshPro

自動で文字列をベイクさせる

ダイナミックフォントに設定する

  • SDFファイルのInspectorのAtlasPopulationModeをDynamicへ

これで、動的に入力した文字列が、□にならずに、ベイクされ表示される。

容量は増えそう

参考:https://kan-kikuchi.hatenablog.com/entry/TextMeshPro

使用した文字列の消し方

CharacterTableとかにある、文字を選択して、Removeを、すれば消える

フォントファイル分散

FallBackFontを使う方法

  • Unityメイン/Windows/TextMeshPro/FontAssetCreatorを開き
  • CustomCharactersを空にして、GenerateFontAtlasボタンを押し、SDF NULLとして保存
  • TextMeshProのFontAssetに、先程作ったAtlasファイルを選択
  • 適当に、平仮名のみと、カタカナのみなどのAtlasファイルを作る
  • SDK NULLファイルのInspectorを選択し、FallBackFontAssetsに、平仮名のみと、カタカナのみなどのAtlasファイルを入れる

参考:https://tsubakit1.hateblo.jp/entry/2019/02/02/060758

日本語平仮名のみ

ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん

日本語カタカナのみ

ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ

Tのアイコン文字を消す

シーンビューの上にあるGizmosの右の▼ボタンを選択し、TextMeshProを非表示に

参考:https://teratail.com/questions/309876

WebGLの入力欄を日本語対応

https://github.com/kou-yeung/WebGLInput/releases からWebGLInput.unitypackageをDLして、InputField (TMP)のオブジェクトのInspectorからAddComponentし、WebGLInputを追加すれば、できた。

参考:https://sorceryforce.net/cs/tips/unity-ui-webgl-input

ポップなフォント

けいおんフォント http://font.sumomo.ne.jp/font_1.html

■文字化け対応

□ではなく、■で文字化けする場合。tabletなど、古い端末で起こる。

SamplingPointSizeをCustomSize:40へ
Paddingを5へ
PackingMethodをFastへ
AtlasResolutinを4096x4096へ
CharacterSetをCustomCharactersへ
SelectFontAssetをLiberationSansSDFへ

の条件で、修正できた。

参考:https://hirokuma.blog/?p=2381#toc1

日本語メモリ圧縮

MemoryProfilerで確認すると、32MBも消費してたので、

日本語は、JIS第1水準漢字だけにすると良いかも。 https://www.pre-practice.net/2018/03/jis1.html

他条件は、以下のようにすればよいかも。

SamplingPointSizeを、CustomSize:29
Padding:3
PackingMethod:Fast
AtlasResolution:2048x2048

SDFファイルのCustomCharacterListを表示

  1. Unityメイン/Windows/TextMeshPro/FontAssetCreatorを開く
  2. SelectFontAssetにSDFファイルを追加
  3. CharacterSetがHexになってたら、CustomCharactersへ

すると、CustomCharacterListに、そのファイルに含まれてる文字列が、出てくる。

CustomCharacterList文字列保存方法

  1. FontAssetCreatorで、GenerateFontAtlasを押し、Saveボタンを押し、
  2. SDFファイルを作成する。

すると、CustomCharacterListの文字列が保存される。文字列の順序は、整理される。