この記事でのバージョン
Unity 6000.0.34f1
はじめに
今回はUnityのTMP(TextMesh Pro)で特定の文字や、数字の位置(座標)を取得する方法の紹介です!
これを使えば「テキスト内の数字の場所に他の数字テキストを飛ばす」
みたいな事がテキストのオブジェクトを分けずに実装出来ます。
![]() |
![]() |
TMPでテキスト内の特定の文字や、数字の位置(座標)を取得する方法
まずTMPはTMP_TextInfoという形で、文字ごとのメッシュの情報などを確認出来ます。
なので、位置を知りたい文字を探し、そのTMP_TextInfoを参照すれば座標が分かるという事です。
実際に拡張メソッドとしてまとめると以下のような感じに。
上記のスクリプトを作成すると、どのTMPでも以下のような感じで座標を取得できるようになります。
//TMPのテキスト内の数字の座標(中心)を取得 var numberCenterPosition = _tmp.GetNumberCenterPosition(Space.World); //TMPのテキスト内の任意の1文字(char、今回はボ)の座標を取得 var targetCharCenterPosition = _tmp.GetCharPosition('ボ', Space.World); //TMPのテキスト内の任意の文字列(string、今回は知名度)の座標を取得 var targetStringCenterPosition = _tmp.GetStringCenterPosition("知名度", Space.World);
なお、どれも複数ある場合は最初の方を取得し、該当するものが無い場合はテキストの中心を返します。

