(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


TMPでテキスト内の特定の文字や、数字の位置(座標)を取得する方法【Unity】【uGUI】【TextMesh Pro】


このエントリーをはてなブックマークに追加


この記事でのバージョン
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);


なお、どれも複数ある場合は最初の方を取得し、該当するものが無い場合はテキストの中心を返します。