はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】UI ToolkitでWindow画面いっぱいに表示ができないときの対処法(Unityが自動生成するTemplateContainerの影響)

はじめに

今回はUI Toolkitで画面いっぱいに何かを表示したいときの方法を紹介したいと思います。

画面いっぱいに表示している様子

UI Builderと実際の見た目が異なる

BackgroudColorを赤色に設定したVisual Elementを配置し、flex-grow1に設定してあげるとUIBuilderのWindowいっぱいに表示されます。

UI Builder上の表示

ただしUnityエディタ上で実際にWindowを立ち上げても、何故かWindowいっぱいに表示されません。

実際の見た目が異なる

原因

Unityが自動生成するTempalteContainerが原因です。TemplateContainerは子のサイズに応じて自動でリサイズします。

UI Toolkit Debuggerで調べた様子

UI Toolkit Debuggerで見てみると、Visual ElementTempateContainerの大きさまでしか広げることができず、TemplateContainerがWindowいっぱいには広がっていません。

またこれは覚えてほしい機能一位なのですが、UI Toolkit Debuggerstyleの変更ができます。TemplateContainerflex-grow1に変更すると画面いっぱいに赤色になります。

TemplateContainerのflex-growを1に変更

対処法

コード上でflex-growの設定をしたい場合は、rootVisualElementから設定してあげると良いでしょう。

public void CreateGUI()
{
    // TemplateContainerのflexGrowを1に設定する
    rootVisualElement.Children().First().style.flexGrow = 1;
    
    // ...
}