テキストを作成した時に、テキストボックスがぴったりテキストに合わさってほしい時が個人的にあります。
その解決方法。
もくじ
テキストボックスのとテキストのサイズの状態
あとでエリアを指定するにしても、一度最小の大きさにして、位置を調整したい事があったり
ContentSizeFitterを使用する場合
テキストにContentSizeFitterのコンポーネントをアタッチ
Horizontal FitとVertical FitをPreferred Sizeにするとテキストボックスが文字のサイズに合わさる
参考
[Unity] Textコンポーネントでテキストを切り捨てずに全文表示させる方法 – Qiita
スクリプトを使用する場合①
ContentSizeFitterだと設定変更する手間がかるのと自動更新できないので、下記のスクリプトを使用してみました。
【Unity】【UI】テキストのサイズ調整を行うコンポーネントです · GitHub
少し調整
コンポーネントをつけた瞬間に、テキストボックスが文字のサイズに合わさり、文字を変更しても自動更新するようにしてみました。
12行目の順番を変更
public enum AdjustMode { HeightAndWidth, Height, Width, None }
31行目に
AlwaysUpdate=true;
49行目あたりのif文をコメントアウト
// if ((Mode == AdjustMode.Width || Mode == AdjustMode.HeightAndWidth) && text.horizontalOverflow != HorizontalWrapMode.Overflow) // { // text.horizontalOverflow = HorizontalWrapMode.Overflow; // }
スクリプトを使用する場合②
上記のスクリプトを参考に要素を削ってみたもの。
ExecuteInEditModeとはスクリプトをEdit モードで実行できるようになるモードのこと
using UnityEngine; using UnityEngine.UI; [ExecuteInEditMode] public class TextSizeAdjust : MonoBehaviour { void Update() { Adjust(); } public void Adjust() { Text text = GetComponent<Text>(); text.rectTransform.sizeDelta = new Vector2(text.preferredWidth, text.preferredHeight); text.rectTransform.sizeDelta = new Vector2(text.preferredWidth, text.preferredHeight); } }
まとめ
あくまで補助的なスクリプトなのであしからず。