UI Builderと実際の見た目が異なる
BackgroudColor
を赤色に設定したVisual Element
を配置し、flex-grow
を1
に設定してあげるとUIBuilderのWindowいっぱいに表示されます。
ただしUnityエディタ上で実際にWindowを立ち上げても、何故かWindowいっぱいに表示されません。
原因
Unityが自動生成するTempalteContainer
が原因です。TemplateContainer
は子のサイズに応じて自動でリサイズします。
UI Toolkit Debugger
で見てみると、Visual Element
はTempateContainer
の大きさまでしか広げることができず、TemplateContainer
がWindowいっぱいには広がっていません。
またこれは覚えてほしい機能一位なのですが、UI Toolkit Debugger
でstyle
の変更ができます。TemplateContainer
のflex-grow
を1
に変更すると画面いっぱいに赤色になります。
対処法
コード上でflex-grow
の設定をしたい場合は、rootVisualElement
から設定してあげると良いでしょう。
public void CreateGUI() { // TemplateContainerのflexGrowを1に設定する rootVisualElement.Children().First().style.flexGrow = 1; // ... }