[Unity] script で TextMeshPro を扱う
Version unity 2020.3.27.f1 で動作検証を行っています。
ドットゲームの開発をしていて、ドット文字を表示させる際に TextMesh Pro を使用したので実装方法をまとめておきます。
そもそも TextMesh Pro とは?
TextMeshPro は、テキストのための究極のソリューションです。Unity の UI Text と古い Text Mesh の代わりに使用するのに最適です。
強力で使いやすい TextMeshPro (TMP) は、高度なテキストレンダリング技術と一式のカスタムシェーダーの使用によって、テキストのスタイリングとテクスチャリングに関して非常に高い柔軟性を提供しながら、視覚的な品質を大幅に向上させます。
TextMeshPro を使用すると、テキストのフォーマットとレイアウトに際してより高度な制御が可能になります。例えば、文字・行・段落の間隔調整や、カーニング、テキストの両端揃え、リンク、30 種類を超えるリッチテキストタグ、複数のフォントやスプライトのサポート、カスタムスタイルなどの機能を備えています。
TextMeshPro は素晴らしいパフォーマンスも備えています。TextMeshPro で作成されたジオメトリは、Unity のテキストコンポーネントと同様に 1 文字ごとに 2 つの三角形を使用するため、パフォーマンスの負荷を増加させることなくビジュアル品質と柔軟性を向上させることができます。
公式ドキュメントによると上記のように記載されています。 要約すると TextMesh, uGUI のハイブリッド版 のような component でテキストを綺麗に描画してコントロールしやすくなるコンポーネントのように見えました。
理解が間違っていましたらご指摘いただければ助かります。
実装方法
今回は PixelMplus を利用させていただきました。
テキストの import はこちらの記事が参考になります。
Hierarchy View から TextMesh Pro を追加します。
この時 PixelMplus10-Regular に設定します。
次に操作する script を用意します。
前回実装した Timer の script を流用します。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro; public class TimerManager : MonoBehaviour { [SerializeField] private TextMeshProUGUI _timerText; private float _time = 60f; void Update() { _time -= Time.deltaTime; int seconds = (int)_time; _timerText.text = seconds.ToString(); } }
uGUI の利用との差分としては TMPro を using して、型を TextMeshProUGUI を使うようにします。
以上です。