文字列に合わせたUI.Textのサイズを取得する方法

UnityのUI.Textで、実際にテキストを表示した際のサイズが知りたい場合はpreferredWidthpreferredHeightを使って調べることができるそうです。

使い方

Text text;

float width = text.preferredWidth;
float height = text.preferredHeight;

テキストのサイズに合わせてUIを調整したい場合に便利かなと思います。

TextMeshPro

TexhMeshProの場合もpreferredWidthpreferredHeightを使って実際のサイズを調べることができるようです。

使い方

TMPro.TextMeshProUGUI text;

float width = text.preferredWidth;
float height = text.preferredHeight;

リンク

Unity – Scripting API: ILayoutElement
https://docs.unity3d.com/ScriptReference/UI.ILayoutElement.html

Class TextMeshProUGUI | TextMeshPro | 1.5.6
https://docs.unity3d.com/Packages/com.unity.textmeshpro@1.5/api/TMPro.TextMeshProUGUI.html

関連記事

UnityのUIをスクリプトから操作する方法
UnityのUI(Pos X/Pos Y/Pos ZやWidth/Height)はRectTransformのlocalPositionやizeDeltaを使って操作できるようです。 Pos X/Pos Y/Pos Z // Pos X GetComponent<RectTransform> ().localPosition.x; // Pos Y GetComponent&...

UnityのSceneビューでUIを非表示にする手順
右上の「Layers」というドロップダウンメニューからUIの項目を外せば、SceneビューでUIを非表示にできるみたいです。*1 ※非表示にしたいUIのLayerが「UI」以外になっている場合は適宜変更してください。 リンク Layermask for scene camera? - Unity Answershttps://answers.unity.com/ques...

UnityでマウスがUI上にあるかどうかチェックするスクリプト
Unityでは、Physics.Raycastを使ってマウスがオブジェクト上にあるかどうか調べることができます。 Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition); RaycastHit hit; if (Physics.Raycast (ray, out hit)) { // 処理したい内容 } ただし、上...

UnityのUIに自分で作ったメッシュを表示
UnityのUI上に自分で作ったメッシュを表示したい場合はOnPopulateMeshを使うとできるみたいです。 public class Example : Graphic { protected override void OnPopulateMesh(VertexHelper vh) { vh.AddVert(new Vector3(0, 0), Color.whit...

コメントを残す

メールアドレスが公開されることはありません。