この記事でのバージョン
Unity 2022.3.16f1
はじめに
UnityにはContent Size Fitterという
RectTransformのサイズを自動で変更してくれるコンポーネントがあります。
ただ、自動レイアウト系は即座に更新されるわけではく、特定のタイミングで更新されるので、
場合によってはちょっと遅れて更新されたり、そもそも更新されない場合があります。
再構築は直ちに起こるわけではなく、レンダリングの起こる直前、現在のフレームの最後に発生します。直ちに発生しない理由は、これにより、レイアウトが同じフレームで何度も再構築される可能性があり、パフォーマンスへ悪影響を与えるためです。
と言う事で今回はContent Size Fitterを手動で即座に更新する方法の紹介です!
と言っても更新したいタイミングで以下のコードを実行するだけ。
/*_contentSizeFitterがContentSizeFitter*/ //縦と横のサイズ計算 _contentSizeFitter.SetLayoutHorizontal(); _contentSizeFitter.SetLayoutVertical(); //レイアウトを即時更新 LayoutRebuilder.ForceRebuildLayoutImmediate(_contentSizeFitter.GetComponent<RectTransform>());
なお、例のように画像とテキストを合わせてセンタリングする方法は以下の記事を参照のこと。