テキストとボタンを含むスクロール可能なダイアログボックスを作成しようとしています。ダイアログの内容がスクロールビューポートよりも大きい場合は、コンテンツをすべてビューポートの上部に揃えたいと思います。すべてのコンテンツがスクロールせずにビューポート内に収まるようにするには、ビューポートの中央に揃える必要があります。ダイナミックスペーシングを使用したスクロールビュー
IMG1:コンテンツがスクロールビューポート内に収めることができれば、コンテンツを中心に垂直方向に整列する方法の一例。
IMG2:コンテンツがスクロールビューポート内のすべてのフィット感に大きすぎる場合、コンテンツが上に垂直に整列する方法の一例。
は、これは私が動的にContent
要素に取り付けられている。Vertical Layout Group
でパディングを計算することにより、垂直方向の位置を処理しようとしています私のキャンバス
Canvas
|
|---Scroll View (contains Scroll Rect component)
|
|---Viewport
| |
| |---Content (contains Vertical Layout Group, Content Size Fitter)
| |
| |---Text (contains Horizontal Layout Group component)
| |
| |---Button (contains Horizontal Layout Group component)
| | |
| | |---Text
| |
| |---Text (contains Horizontal Layout Group component)
|
|---Scrollbar Vertical
の構造です。すべてを上揃えにするには、パディングを10に設定します。すべてを中央揃えにするには、各UI要素の高さを決め、適切にパディングを設定してすべてを中央に表示させます。
ダイアログのテキストは、キャンバスにアタッチされているスクリプトの一部であるSetText
メソッドによって設定されます。 SetText
は、ダイアログ内の各コントロールのテキストを割り当て、すべてのパディング計算を行います。
問題はUnityがテキストを割り当てた直後に各コントロールの寸法を計算していないように見えることです。たとえば、最初にText
コントロールの1つにテキストを割り当てた後、コードにブレークポイントを設定すると、サイズ関連のプロパティはすべて0のままです。次に、新しいテキスト値を割り当てると、サイズ関連のプロパティは、私が割り当てた最初のテキスト値からの値を持ちます。
これを解決する最良の方法は何ですか?