はじめに
この記事は 2025年 VR方針HIKKYアドベントカレンダーの初日の記事です。様々な知見が得られると思いますので是非購読をお願いします!
この記事で得られる知見
現在、Unityを使ってUIを組む場合 uGUI(Unity UI)を使うことが一般的です。しかし以前より UI Toolkit というライブラリがUnity公式として開発されており、こちらも段々と成熟してきており選択肢にとして上がるようになってきました。
この記事では両ライブラリの特性と現在位置を踏まえて解説しつつ、UnityでUIを構築するにあたっての他の選択肢にも触れ、開発者の選択の助けとなることを目指しています。
uGUI
uGUI(Unity UI)はその名の通り Unity 上でUIを構築するうえで最もポピュラーな選択肢です。UnityEditor 上にて手動でUI配置などレイアウトを行います。内容はシーンまたはPrefabファイルに Yaml 形式で記述されます。
今から新規開発を行う場合であってもuGUIを採用することが安パイであることは間違いないでしょう。既存のUnity製ゲームのUIはほぼuGUIで作られているので、それらのゲームを参考に「こんなUIを作りたい」といったリファレンスも豊富ですし、レスポンシブ対応やローカライゼーションや最適化などの知見が数多くネット上に存在するのでUI開発の大きな助けになります。
今後、UI Toolkit の方を「Single Solution」として推進する話はあるようですが、uGUIが非推奨になる訳ではないらしいです。
UI Toolkit
では UI Toolkit の方はどうでしょうか?UI Toolkit は UI Builder というツール上で uxmlやussというファイルを組み合わせてUIを構築します。webのフロント開発でいう html が uxml に当たり css が uss に対応するファイルとなっています。
html/cssでのUI開発になじみがある人ならとっつきやすいと思われます。筆者がUI Toolkitを使って開発した際は、UI Builder上に表示される用語の意味(Flexbox類など)を把握するのがなかなか大変でした。また UI Builderも発展途上のようで、変更したプロパティがプレビューにすぐに反映されなかったり、一部のプロパティの設定項目がUI Builder上にな存在せずuxml/ussからの設定が必要だったりと苦労させられました。
余談がてら一例ですが、Vector3IntField の x/y/z の表記を r/g/b へ変えるために結構苦心してussをいじくりました。おそらくC#で上書き処理を書いてしまうのが一番手っ取り早くはあったでしょう。
UI Toolkit は Editor拡張開発での事例はよく聞きますが、runtimeでの使用事例は少ない印象です。UI ToolkitのコンポーネントもEditorでしかサポートされていないものも多いです。
UI Toolkit と生成AI
uGUIに比べて UI Toolkit が優れているのが生成AIとの相性です。uGUIはYamlで記述されていますが、ClaudeCode などでシーンやPrefabの編集を安定して行えるようになったという話はあまり聞きません。(ClaudeCode氏も最近はシーンやPrefabを編集するのをもはや諦めている印象があります)
一方 UI Toolkit はhtml/cssの仕様に酷似しているためか、ClaudeCodeでも要望通りのUIのuxmlを修正不要で出力してくれることが多かったです。しかし気を利かせてか謎のパディングを入れきたりするのでスタイルの統一には一工夫必要そうでした。
UIの構築を生成AIに任せたいのであれば、プロトタイピングや Vibe Coding においては UI Toolkit を runtimeでも採用するのはアリだと思います。
最近の UI Toolkit の動向
最近のニュースとして、UI Toolkitを導入する際の障壁になっていたカスタムシェーダーと WorldSpace が最近対応されたようです。
WorldSpace 対応でVRでの開発でも選択肢として上がるようになりました。
その他の選択肢
uGUI か UI Toolkit かだけでなく、UnityでUIを構築する選択肢は他にも存在します。
ImGui
Editor拡張でおなじみ即時モードのUIです。シンプルなUIの組み合わせでツール系を開発したい場合よい選択肢になると思います。UI Toolkitのruntimeでは現状サポートされていない MenuBar/ContextMenu/ColorPicker などのコンポーネントが利用できます。
スタイルやフォントも固定ではなく変更可能なのである程度はテイストをコントロールできます。
UnityのruntimeでImGuiを導入するには以下の手順を参考にして下さい。
Dear Imguiというライブラリをこちらのリポジトリからupm経由で導入することになります。
ツール系アプリ開発でおすすめしたいのですが、↑はWebGLで動きません。こちらのアセットならWebも含めた幅広いプラットフォームに対応しているようです。
即時モードのUIの構築はC#で行うことになり、かつ一様な実装になることが多いのでAIのサポートも期待できます。
UaaL
UaaL (Unity as a Library)とはUIをWebやOSネイティブのフレームワークで開発し、Unityでは3D描画やアセット管理のみ行ってその機能をライブラリ的にアプリに埋め込んでしまおうというアプローチです。UIの比重の大きいアプリなら検討する価値があると思います(特に文字入力が重要なファクターである場合)
しかし、それゆえの苦労もあります。例えばUnityエンジニアが UnityEditor 上でアプリを動かすためのUIを結局組む必要があったりします。検討に当たっては以下の記事が参考になると思います。
Unityエンジニアが UnityEditor 上でアプリを動かすためのUIを結局組む必要があったりします。
あるいは、これをImGuiで組めばシナジーがあるかもしれませんね。
UIWidgets?
彼は中国に旅立ちました。
UIWidgets 2.0 are only compatible with Unity China version
まとめると、
- 安定な選択肢を取りたい
- 👉 uGUI
- AIを活用した開発を行いたい
- 👉 UI Toolkit
- ツール系アプリなどUIに世界観などが不要な場合
- 👉 ImGuiをはじめとした選択肢もアリです
今は従来通りuGUIで開発しつつEditor拡張でUI Toolkitの知見を貯めていき、†来るべき日† に備えているという所がおそらく多いのではないでしょうか。
おわりに
いかがでしたか?uGUIとUI Toolkitのどちらかだけでなく他の選択肢もあることを知って頂けたのであればこの記事を書いた価値があったと思います。
読んでいただいてありがとうございます。繰り返しになりますが、参考になったという方は弊社アドカレを引き続き購読いただければと思います。
おまけ
- 公式の比較
- UI Toolkit runtime 採用事例