UE4でUIをゲームパッド(キーボード)で操作する


UE4を使ってて思うのは探しても欲しい記事(特に日本語)が全然見つからない…のでメモ

ゲームパッドを使ってUIを操作するのを検索すると複雑なのが多い印象があった。オーバーライドしたり、レベルブループリントから関数を呼んだりとか。

 

そんな中見つけたのが

Unreal Engine 4 UMG Using a Gamepad - new version see below - YouTube

こちらの動画でGet Input Analog Stick Stateを使って入力を見るのがシンプルだしわかりやすいと思った。

 

けどまだ面倒くさい…

キーボードも可にしたらノード増えるし…

UIの配置を複雑にしてフォーカスが当たる順番も複雑ならこんな感じにする必要あるだろうけども…

Unityとかもっと簡単にできた気がするぞ…さすがにあるでしょっと思ってまた探す

 

 そしてやっと見つけた完璧な回答

Gamepad/Keyboard navigation in UMG menus? - UE4 AnswerHub

キーボードのフォーカスを使おうというもの

ノード数が少なくて素晴らしい。

 

これを参考に作っていく

f:id:fu_fusero:20170913040305p:plain

こんな感じで適当にボタンを置いて

f:id:fu_fusero:20170913040552p:plain

レベルブループリントから表示させる。

その時に最初にフォーカスするボタンを選んでおく(この場合one)

 

そしてWidgetのブループリントでフォーカスされているボタンの背景色を変更

f:id:fu_fusero:20170913041109p:plain

これだけで完成!

f:id:fu_fusero:20170913041558p:plain

さらに、この方法ならボタンが後から増えても配列の要素を増やすだけで対応できる!

 

こんな感じの点線が出てきて消したいときには編集>プロジェクト設定>エンジン>User Interface>Focus>Render Focus RuleをNeverにすればOK

f:id:fu_fusero:20170913041933p:plain

 

※ 2019/03/14 追記

フォーカスが切り替わったときの音(カーソルの移動音)を鳴らすならこんな感じ

中身としてはフォーカスされているボタンを保存しておくBeforeの変数を作成してそれとフォーカスされているボタンが違ったら音を鳴らすというもの

ちょっと雑な気もするけど…

f:id:fu_fusero:20190314160011p:plain