2016-10-09 17 views
0

テキストとボタンを含むスクロール可能なダイアログボックスを作成しようとしています。ダイアログの内容がスクロールビューポートよりも大きい場合は、コンテンツをすべてビューポートの上部に揃えたいと思います。すべてのコンテンツがスクロールせずにビューポート内に収まるようにするには、ビューポートの中央に揃える必要があります。ダイナミックスペーシングを使用したスクロールビュー

Img1

IMG1:コンテンツがスクロールビューポート内に収めることができれば、コンテンツを中心に垂直方向に整列する方法の一例。

Img2

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のままです。次に、新しいテキスト値を割り当てると、サイズ関連のプロパティは、私が割り当てた最初のテキスト値からの値を持ちます。

これを解決する最良の方法は何ですか?

答えて

0

解決策を見つけました。 Content要素のピボットのy値を1から0.5に変更しました。 Unityは、必要に応じてセンターを配置し、必要に応じてトップアライメントします。コードを動作させる方法を理解する必要はありません。

関連する問題