MRが楽しい

MRやVRについて学習したことを書き残す

Unityで文字数に合わせてスクロールできるScrollViewを作成する

本日はUnityの小ネタ枠です。
Unityで文字数に合わせてスクロールできるScrollViewを作成する方法を記事にします。

ContentSizeFilter

ContentSizeFilterを利用するとTextオブジェクトの改行に合わせて高さのサイズを自動調整できます。
docs.unity3d.com

サンプルシーンの作成

Hierarchyで右クリックから[UI -> ScrollView]でScrollViewオブジェクトを追加します。

今回は文字列を立てスクロールするViewを作成します。
ScrollViewは縦方向をStretchで詰めたレイアウトで設定しました。

ScrollViewオブジェクトのInspectorビューを開き、ScrollRectコンポーネントの[Horizontal]のチェックボックスを外します。
これで横方向のスクロールが無効となります。

Contentオブジェクト配下に右クリックから[UI -> Text]でTextオブジェクトを追加します。

こちらもピボットの設定を変更し、上方向に詰めたレイアウトで配置します。

Textコンポーネントの[Overflow]を[Scroll Rect]に変更します。
これで文字数が横幅以上になった場合は自動で改行するようになります。

Content Size Fitterコンポーネントを追加し、文字数に応じてオブジェクトサイズが自動調整されるようにします。

[Vertical Fit]を[Preferred Size]に設定すると文字の改行に合わせて縦方向のサイズが自動調整されるようになります。

最後にContentオブジェクトが配下のTextコンポーネントに合わせてサイズが自動調整されるようにします。
こちらはVertical Layout GroupコンポーネントとContent Size Fitterコンポーネントを追加します。

こちらも[Vertical Fit]を[Preferred Size]に設定します。
これで配下のTextオブジェクトに合わせて縦方向のサイズが自動調整されるようになります。

動作確認

シーンを再生して動作を確認します。

Textコンポーネントに収まりきらない文字数の文字を入力すると、Contentオブジェクトの縦サイズが自動で大きくなり、縦スクロールが有効になります。
Unityで文字数に合わせてスクロールできるScrollViewを作成できました。