(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


Content Size Fitterが自動で更新されない時に、手動で即座に更新する方法【Unity】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 2022.3.16f1


はじめに

UnityにはContent Size Fitterという

RectTransformのサイズを自動で変更してくれるコンポーネントがあります。



ただ、自動レイアウト系は即座に更新されるわけではく、特定のタイミングで更新されるので、

場合によってはちょっと遅れて更新されたり、そもそも更新されない場合があります。

再構築は直ちに起こるわけではなく、レンダリングの起こる直前、現在のフレームの最後に発生します。直ちに発生しない理由は、これにより、レイアウトが同じフレームで何度も再構築される可能性があり、パフォーマンスへ悪影響を与えるためです。


と言う事で今回はContent Size Fitterを手動で即座に更新する方法の紹介です!

と言っても更新したいタイミングで以下のコードを実行するだけ。

/*_contentSizeFitterがContentSizeFitter*/

//縦と横のサイズ計算
_contentSizeFitter.SetLayoutHorizontal();
_contentSizeFitter.SetLayoutVertical();

//レイアウトを即時更新
LayoutRebuilder.ForceRebuildLayoutImmediate(_contentSizeFitter.GetComponent<RectTransform>());


なお、例のように画像とテキストを合わせてセンタリングする方法は以下の記事を参照のこと。