Unreal Engineでは、標準のエンジン機能にUIをゲームパッドで操作する仕組みがありません。UnityではEventSystemと言ってUIの操作に関する処理を担当するシステムが有りしっかりゲームパッドのコントローラーでUIを何のコーディングも操作もすることなくUIを動かすことができるのですが、アンリアルエンジン!一体君はなぜゲームパッドでUIを動かせないんだ?
結論 4.99$でアセットを買え
EZGamepadWidgets – Simple Widget Gamepad Support
を購入してください。Unityで言うところのEventSystemに似た機能がブループリントで実装されています。容量は100KBとほぼ有って無いようなくらいのごく微量の容量で安心です。
UE5のUIは標準でゲームパッド操作できない?
Unreal Engineでは標準で何故かUIをゲームパッドで操作することができません。マウスに関しては操作ができるようになっているのですが、ゲームパッドでのコントローラー操作となると自分でゲームパッドで操作できるように処理を作らなければいけません。(他機能は完璧なまでに用意されているのに、なぜUIは標準で操作できないのか?)
よくある解決方法が、Focusがあるボタンを判定して、色を変えるというもの。しかしそれでは
- 全てのボタンを毎フレームTickで処理するので処理負荷的にあまり心地よくない
- ボタンの選択を変えたときに音を鳴らしたくなったときに処理を作るのがかなり大変
とまあ、あまり良い解決方法ではありません。そこで冒頭のアセットではUnityのイベントシステムのような機能をブループリントで再現してくれています。
UIをゲームパッド操作可能にする神アセット(.99)
アセット名とURL
EZGamepadWidgets – Simple Widget Gamepad Support
上記結論とダブりますが似たようなアセットがあるので購入の際は間違えないように注意してください。
導入の注意点
ストアの説明文がやや不足していて、本当に大丈夫なのか?と疑心暗鬼になりながらも、安いので失敗してもまあいいやで購入しました。
結論、値段以上にしっかりと機能がコーディングされていて、シンプルに良いアセットだと思いました。
ただ一つ注意点として、ゲームパッドでUIを操作する処理が書かれているウィジェットブループリントを親にすることで、ゲームパッドをUIで操作することができます。
つまり、すでに作成している既存のウィジェットブループリントなどは、もう一度EZGamepadWidgets を親にして作り直す必要があるということです。
導入方法
ストアページの説明にあるようにEZGamepadWidgets を親にしてウィジェットブループリントでを作成して、「 RegisterButton 」にゲームパッドで操作したいボタンを登録するだけです。(UE5.3までとありましたが普通にUE5.4でも動きました。)全動作は確認してないのでもしかしたら、があるかもしれませんが、ゲームパッドでUIを選択する部分は普通に動きました。
なぜ登録するだけでコントローラー操作可能になるのか?と疑問に思います。しかもその部分については公式ページには説明されていません。しかしアセットを購入すると分かるのですが、「 RegisterButton 」とはEZGamepadWidgets アセットが作成したカスタムイベントであり、親とするWidgetにゲームパッドで操作するロジックが含まれています。
著作権があるので念のためぼかしていますが、親となる「 WBP_EZGamepadWidget 」という、ウィジェットブループリントにLogicとして図のような処理が実装されています。
ここでは登録されたボタンに対して、選択されたか?どうかを検出して、HoverStyleにセットした見た目に変更してくれる機能が実装されています。
音を出すには改造が必須
UIを選択したときに音を出したいと思うのは開発者なら誰もが思うところですが、残念ながら音を出す機能はEZGamepadWidgetsには実装されていません。Logicの部分を解読して自前で改造する必要があります。
それすら作りたくない人は別途アセットを探す必要があるでしょう。
更に細かい制御をしたい場合には高額アセットもあるよ
Visual Widget Navigation
EZGamepadWidgetでは指定できない、どのボタンからどのボタンへ移動するというのが指定できるアセットです。正直ゲームパッドでボタンが選べたら何でも良いとは思うのですが、こだわる人はVisual Widget Navigationアセットを検討するのもありだと思います。
まとめ
Unityでは何の苦労もすることなくUIを操作できる部分がアンリアルエンジンではかなりの苦労と苦悩を持って解決しなければならない問題となっています。
他の機能がUnity以上に充実しているだけにかなりアンリアルエンジンの価値を下げてしまっているのではないかと思います。ここがUnityのイベントシステムのようなものが標準で搭載されていれば完璧なゲームエンジンだと思うのですが、UE6とかで改善してくれないのでしょうか?
UIのゲームパッドでの操作は、ゲームに必須レベルで必要な機能だけに、なぜ標準で実装されていないのかに疑問しか抱きません。
アセットで対応できるとはいえ、アンリアルエンジン側が何かよいアセットを吸収して本家の機能として標準搭載して欲しいところです。(特に音を鳴らせる機能も引っ付けて。)
コメント