開発中のゲームでスコアが増えた時にテキストの横幅を縮小しようと思ったところ、表示がおかしくなってしまいました。
解決まで少し時間がかかってしまったので、内容をメモしておきます。
もくじ
問題の現象
問題の現象はこんな感じです。
TextMeshProでスクリプトからRectTransformのLocalScaleを動かしてテキストの横幅を拡縮させたところ、テキストが四角の塗りつぶしになってしまいました。

いろいろ調べたところ、基本的にUIはScaleを設定して動かさない方が良いとのことです。
Canvas Scalerが拡縮を行っているので、ImageなどはSizeDeltaを調整するのが良いようです。
でもテキストはSizeDeltaを調整しても枠のサイズが変わるだけで、文字が拡縮するようにはなりません…。
解決方法
TextMeshProの設定を見ていったところ、文字を拡縮させる設定がありました。

まずFont Sizeの設定でAuto Sizeのチェックをオンにします。
そしてAuto Size Optionsに拡縮させる最大サイズと最小サイズを設定します。
今回は、文字サイズ自体は変えたくないので同じ値にしました。
横幅を縮める設定が「WD%」です。
何パーセントまで縮めるかという値を設定します。0だと全く縮まず、最大50%まで縮めることができます。

これで実行してみると、良い感じの表示になりました!
まとめ
TextMeshProはそのうち使えなくなるらしい?とのことですが、とりあえず現時点で自分がうまくいった方法をまとめました。
UIはスケールを指定しない方が良いという点も忘れないようにしたいです…。





