MENU

カテゴリー

プロフィール

すいみん

技術的なことが好きなゲームのお仕事をしているCGデザイナーです。
月間27万pvの当ブログ『CGメソッド』運営
続きを読む

Unity デザイナーズ・バイブル 6月6日発売!

【Unity】uGUIでテキストボックスを文字のサイズに合わせるエディタ拡張

0

ugui-text-size-adjust

テキストを作成した時に、テキストボックスがぴったりテキストに合わさってほしい時が個人的にあります。

その解決方法。

テキストボックスのとテキストのサイズの状態

f:id:min0124:20171123103010p:plain

あとでエリアを指定するにしても、一度最小の大きさにして、位置を調整したい事があったり

f:id:min0124:20171123103237p:plain

ContentSizeFitterを使用する場合

  • テキストにContentSizeFitterのコンポーネントをアタッチ

  • Horizontal FitとVertical FitをPreferred Sizeにするとテキストボックスが文字のサイズに合わさる

f:id:min0124:20171123105347p:plain

参考

[Unity] Textコンポーネントでテキストを切り捨てずに全文表示させる方法 – Qiita

スクリプトを使用する場合①

ContentSizeFitterだと設定変更する手間がかるのと自動更新できないので、下記のスクリプトを使用してみました。

f:id:min0124:20171123105859p:plain

【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);
}
}

まとめ

あくまで補助的なスクリプトなのであしからず。

すいみん
専門誌の定期購読をするなら月額980円の「Kindle Unlimited」がおすすめです!


eyecatch-amazon-kindle-unlimited
【Kindle Unlimited】CGデザイナーにおすすめ!専門書読み放題の電子書籍サービス

以上、すいみん(@cg_method)でした!

0