🐥
マウス直下にあるTextMeshProのTextの文字を取得する
コード
サンプルコードは以下。
これで、マウスカーソル以下にある文字がDebug.logで表示されます。
using TMPro;
using UnityEngine;
public class MouseOnTextObserver : MonoBehaviour
{
//TextMeshProのTextコンポーネントをここに選択
[SerializeField] private TextMeshProUGUI displayUIText;
private string colorTagStart = "<color=red>";
private string colorTagEnd = "</color>";
private void Update()
{
//文字列のindexが取れる
var index = TMP_TextUtilities.FindIntersectingCharacter(displayUIText, Input.mousePosition, null, true);
//マウス以下のindexが取れないと-1になるので、-1以外のみ
if (index != -1)
{
//カーソル直下にある文字
var text = this.displayUIText.text;
Debug.Log(index + " : " + text[index]);
//カラータグを消す("<color=red>"てやつと"</color>")
text = text.Replace(colorTagStart, "");
text = text.Replace(colorTagEnd, "");
//カラータグを付与
var editedText = text.Insert(index + 1, colorTagEnd);
editedText = editedText.Insert(index, colorTagStart);
//uiに表示
displayUIText.text = editedText;
}
}
}
参考
Discussion