Unity UI Toolkit を使う
始めに
新たなゲームを作ろうと思っているが、これまでのゲームは uGUI を使っていた所を UI Toolkit にしてみようという話。 記事を見ながら一通り触ってみて、気づいた事をメモする。
- Unity 2022.3.13f1
- UI Toolkit 1.0.0-preview.18
※ 2023/11/11 現在で正式リリースしていない。
https://docs.unity3d.com/Packages/com.unity.ui@1.0/changelog/CHANGELOG.html
参考
公式 https://docs.unity3d.com/ja/2023.2/Manual/UIE-simple-ui-toolkit-workflow.html
公式2 https://blog.unity.com/ja/engine-platform/ui-toolkit-at-runtime-get-the-breakdown
Qiita「Unityの最新UIシステム「UI Toolkit」でランタイムUIを作成する方法まとめ」 https://qiita.com/uminohiyoko/items/73d366ec35154d301baa
メモ
UI Builder
- 既存のファイルを開くのが分かりづらい。
- メニューがある。小さくて気付かなかった。
- Editor 上でファイルを選択して、ポップアップメニューから開くでも開けた。
- メニューがある。小さくて気付かなかった。
- 解説記事では Visual Element を置いてその子として Button を置いている。Visual Element は必須ではないようだが、どうせ画面全体の操作をするので付けておく。
- バナー広告の場所を空けるとか。
- 画面全体のUIを作る時は Hierarchy のルート(*.uxml)を選択して、Inspector の Match Game View にチェックを入れる。
- 固定長で実装する事の方が少ない気がするが、デフォルトはOFF
- Editor Extention Authoring の設定の意味が初めは分からなかったが、Editor 拡張を作る場合にONにするそうだ。
- Tree View がある。ゲームでは使う場面が少ない気がするが、これも元々が Editor 拡張を作る仕組みだったからだろう。
TreeView 子の作り方https://light11.hatenadiary.com/entry/2023/05/23/192515
UIDocument
- 複数置ける。それぞれに一つ uxml を付ける。
- ダイアログなどのパーツごとに分けて作りたいところだが、パフォーマンスの問題から一つだけ置くべきとあった。プレファブにしておいて後から子として追加で読み込む方法がある。
- 表示順はインスペクターにある Sort Order
- ヒエラルキー順は参照されない。
- 表示順入れ替えは面倒な操作なので数字だけで出来るのは良い。
- これ自体は3Dのオブジェクトとして配置されている。
- uGUI での Canvas のようなものが無い。
- GameObject として無効化による非表示ができる。
スクリプト処理
- ボタンクリックは素直な感じ
- 名前を付けておく。
- button.onClick は非推奨
void Start()
{
button = UIDocument.rootVisualElement.Q<Button>("button");
button.clicked += Button_onClick;
}
private void Button_onClick()
{
UIDocument.rootVisualElement.Add(new Label("onclick"));
}
フォント
TextMeshPro の後継である TextCore が使われているとの事
https://discussions.unity.com/t/feedback-wanted-new-text-engine/817240
- Text Settings のフォント指定パスが Resource フォルダ以下となっている。
- 最近では Addressable を使い Resource フォルダは使わない様になっている。
- 置き場所はどこでも良かったので気にしない。
- FontAsset を指定するとあるが、「作成 - TextMeshPro - フォントアセット」ではなく「作成 - テキスト - フォントアセット」で作ったものにしないと指定できない。
- フォントサイズの自動調整はないらしい。
- むしろこれの為に使うのに。
https://discussions.unity.com/t/how-do-you-use-textcore/877767 https://discussions.unity.com/t/whats-the-right-font-can-be-used-in-ui-toolkit/807796
その他
DOTWeenアニメーションhttps://qiita.com/ohbashunsuke/items/4037bb19c059884003aa Qiita「Unity UI ToolkitをRuntimeで導入してみたが、早計だったかもしれない」 https://qiita.com/kukio828/items/5769549282bbc498e87f
最後に感想など
作るのは問題なさそう。フォントは残念な所あり。 後はスケーリングが心配であるものの試せていない。 uGUI の時はかなり苦労していて最終的にはスクリーンサイズを固定した。 良くなっているはずと期待はしている。