1. ダイナミックフォントの生成
1. フォント ファイル: Windows システムのフォント フォルダーなど
2.unityの導入、作成——Text Mesh Pro——フォントアセット
3. フォントの補足: txt ファイルを作成し、一般的に使用される漢字を含めます (中国語の句読点も自分で処理する必要があります)。Unity にインポートして、生成された SDF フォントを選択し、フォント アトラスを更新します。
4. 適切な解像度を選択します。小さすぎると、拡大したときにフォントがぼやけてしまいます。ファイルから文字をインポートし、生成して保存することを選択します。
5. 生成されたフォントをテストします。
2. 静的な式
1. TMP はグラフィックとテキストの混合レイアウトをサポートしており、スプライト タグ (<sprite=1> など) で設定されているデフォルトの絵文字を使用します。
2. フォント表現アトラスの作成
a. リソースアトラス、セグメンテーション
b. TMP スプライト アセットの生成
c. 位置情報の変更
d. TMP 設定のデフォルトの絵文字セットを変更する
スプライト タグでアトラス名を指定することもできます。
<sprite> タグは、スプライト アセット内の画像をテキストに挿入します。スプライト アセットは、TMP の指定されたフォルダーTextMeshPro -> Resources -> Sprite Assetsに配置されている必要があります。
<sprite=9>//デフォルトのアトラス + インデックス
<sprite name="happy"> //デフォルトのアトラス + 画像名
<sprite="My Sprites" Index=9> //アトラス + インデックスを指定します
<sprite="My Sprites" name="happy">//画像ギャラリー + 画像名を指定します
3. ダイナミックな表現
TMP はスプライト内の複数の属性を指定でき、anim は再生アトラスの開始インデックス、終了インデックス、再生レートを指定できます (<sprite=1 anim=1,5,10> など)。
5. 生成されたフォントをテストします。
<スプライト=0><スプライト=1><スプライト=2><スプライト=3>
<sprite="emoji"index=0><sprite="emoji"index=1>
<sprite="emoji" anim=0,3,10>
<スプライト インデックス=1 アニメ=1,5,10>
<sprite="EmojiOne"index=1 anim=1,5,5>
4. ハイパーリンク
<link="ID">ハイパーリンク</link> の場合、クリック イベントをリッスンし、対応する処理を実行する必要があります。
public void OnPointerClick(PointerEventData eventData)
{
TMP_Text tmp = GetComponent<TMP_Text>();
int linkIndex =TMP_TextUtilities.FindIntersectingLink(tmp,eventData.position,null);
if (linkIndex != -1)
{
TMP_LinkInfo linkInfo = tmp.textInfo.linkInfo[linkIndex];
Debug.Log(linkInfo.GetLinkID());
Application.OpenURL(linkInfo.GetLinkID());
}
}
5. 3Dテキスト
6. パフォーマンスの最適化
1. TMP によってエクスポートされたフォント アトラスの形式は非圧縮であるため、4096 * 4096 の純粋なアルファ チャネルに対して 16MB のメモリを占有するため、アトラスの圧縮を検討してください。
2. グラフィックスとテキストを使用して画像とテキストを混在させると、それぞれ dc が消費されます (2 つで使用される素材情報が異なるため)。したがって、TMP で混合された画像もフォントと重ならないように注意する必要があります。そうでないと、テキスト自体の結合プロセスが中断され、DC が増加します。重複がある場合は、テキストとテキストの間のDCがマージされたままになるように、画像を上のレイヤーに置きます(同じコンポーネント内の画像のレベルがデフォルトでテキストよりも高いようです)。
3. TMP コンポーネントでサポートされている外側のグロー、ライティング、シャドウ機能はすべてシェーダーに実装されており、これらを完全に有効にすると、必然的にレンダリングのオーバーヘッドが増加します。プラグインが提供するモバイル内のシェーダーなど、プロジェクトの状況に応じてフォントを生成する別のシェーダーを選択することをお勧めします(モバイル内のシェーダーはライトやライトなどの一部の機能を削除するだけでなく、外輪郭や影のアルゴリズムも簡素化します)