現在、Unity 6.7のベータ版を触っていますが、ここで追加されるUI Toolkitの新機能はかなり盛りだくさんになっています。6.7の正式版はまだ先だと思いますが、期待して待って良いです!実験段階のモノも多いですが、いよいよUI Toolkitが完成しつつあります!
今回はそんなUI Toolkitの新機能の個人的に気になったいくつかを簡単に紹介していきたいと思います。
TextElementにSetTextメソッドが追加!
※Unity 6.6でも使えるようになっていました。
uGUIつまり、TextMeshProにおいてはTMPro_TextにSetTextメソッドがあり、UI Toolkitにも追加されないかなと思っていたのですが、6.7にてとうとう来ました!
TextElementを継承するラベル(Label)で使うことが出来ます。いわゆる文字列を新たにアロケーションすることなく、テキストデータを設定するメソッドで、ReadOnlySpan<char>をそのまま入力することが可能です。

なので、ScriptableObjectに持たせたテキストデータをAsSpanメソッドでReadOnlySpanに変換し、オーバーヘッド無しに表示することができるようになるということです。個人的にはこれが一番うれしい新機能かもしれません!
UI構造をヒエラルキー上で

ヒエラルキー上でVisualTree構造が表示されるようになり、それに伴いエディタのインスペクタから直接UI要素の編集が出来るようになりました。Unityエディタと完全に統合されたということです。これにより、AnimationウィンドウでUIアニメーションを作成することもできるようになりました。(次項でUIアニメーションについて書きます)

UIアニメーションが作成可能に

CreateメニューからUI Toolkit > UI Animation ClipでUIアニメーションのためのクリップを作成できます。これをUI要素のKeyframe AnimationのClipに設定して、Animationウィンドウを起動してアニメを作成します。

上記の設定をした後で、ヒエラルキー上で指定のUI要素を選択すると、Animation上でレコーディング編集が出来ます。

この例ではスプライトを切り替えていくことでUIアニメーションを実現しています。これも待望の機能ですね。
Z-indexの導入
UXMLのヒエラルキーにおいて下にある要素ほどUIの前景にいる、というルールがありますが、このZ-indexによってこのヒエラルキー上の前後関係を無視して直接的にZ軸上の位置を設定できるようになりました。
ヒエラルキーの上下関係で前後関係をコントロールするのは面倒でしたし、インタラクションによる前後関係の変化を簡単に付けられるのは良いと思います。

Window > UI Toolkit > Samplesに追加された新しいサンプルで、この機能の様々な使い方を確認することが出来ます。

Grid Layoutでグリッド状に並べる
displayモードのNone, FlexにGridが追加されます。これによって、その要素の子要素を自動的にグリッド状に並べるようになります。通常、FlexDirection.Columnにボタンを追加していくと下画像のように縦に並べられていきます。


これは多くの人が待ち望んでいた機能かもしれません。ベータ版ではまだ実験段階でありバグもいくつかありますが、完成が待ち遠しい新機能です。
Gapでアイテム間の距離を調整!

これはまさにGrid Layoutのための新パラメータのようなものですが、Spacingのmarginとpaddingに新たにGapが加えられました。

Gapを0にすると、前の項目にあったグリッド状に並べたボタン群はこのようになってしまいます。
VisualElementComponent

これは個人的に興味深い新機能ですが、[VisualElementComponent]アトリビュートを付けた構造体をUI要素にAddComponent出来るようになります。
Label label = new Label();
label.AddComponent(new TestVEComponent{ Counter = 1 });
個人的にはこの機能をどう活かせるかの使い道はまだ思い浮かんでいないんですが、ランタイム中に臨機応変にUIを追加したりするような状況で使えるかもしれません。
背景にグラデーションを

background-imageにグラデーションを設定できるようになりました。これにより、画像を使わずに背景を良い感じにできます。線形と円形の2種類のモードが選べます。

複数のUI Builderを起動!
これは6.7 b2時点ではまだちゃんと動いていない実験段階の新機能ですが、同時に複数のUI Builderを起動できるというものです。例えば、メインのUIとそこにテンプレート・コンテナとして読み込まれているUI Documentをそれぞれ立ち上げて並行して編集していく、ということが出来るようになります。これは早くちゃんと動くようにしてほしいですね!
まとめ
というわけで、近づきつつあるUI Toolkitの完成にテンション上がったので今回こういう記事を書いてみました。Unity 6以降、UI Toolkitは順調に進化してきましたが、特に6.5以降は単純にその性能も向上し、新機能が追加され続けてきました。
6.6での追加ですが、backdrop filterやdrop shadowも待望の新機能でした。個人的には6.7の正式版によってUI Toolkitはやっと一通りの基本機能が揃ったと思います。少し長かったですが、UI Toolkitを使ってきた良かったです。







