ゲーム制作まで書くブログ

読まないで><

UE4_ウィジェットで2ページあるときに、ボタンのフォーカスを切り替える方法(コントローラーでもマウスでも)

しっかり書くつもりはない。

需要があるか不明だから・・・

 

コントローラーでもキーボードでもマウスでも

ウィジェットで配置したボタンを操作させる機能を実装したが

 

ウィジェットの中に2ページ作って

1枚目、2枚目と交互に表示できるようボタンを配置した場合

フォーカスを切り替えなければならない。

 

自分の場合は、1ページ目は「次へ」のボタンだけだからいいけど

2ページ目は「戻る」「閉じる」の2つもあるから、さあたいへん。

 

フォーカスの処理は、ウィジェットのイベントグラフに記載するが

Tickで何度もフォーカスさせる必要がある(フォーカス無くなると行方不明になるから)

 

まず、ボタンの押下時に、ブーリアン変数で

そこが1ページ目かどうかを格納させる。

IsFirstPage、とかいうブーリアン

「次へ」のボタン処理でFalseにして

「戻る」ボタンでTrueに戻す。

 

Tickにブランチをつないで

そこが1ページ目なら「次へ」のボタンだけフォーカスさせる

2ページ目なら、DoOnceとボタンのフォーカス処理をつなぐ。

 

ただ、このままだと、どっちにフォーカスされているのか

見た目でわからない。

 

そこで、両方のボタンのオパシティを落として

選ばれている場合は1.0にする処理をつなぐ。

 

 

こんな感じ

f:id:NeToSuKe:20201124002402p:plain

ForEachLoopで巡回してもらう形にしてる。

 

DoOnceと2ページ目のボタンフォーカス処理は、

このぐちゃぐちゃの処理の、すべての終わりからつながっている必要がある。

 

ブランチのFalseで分岐しているところも、全部。

 

そしてDoOnceは1ページ目に戻ったらリセットされないといけないので

1ページ目かどうかを判断したTickの最初のブランチで

1ページ目のフォーカス処理のあとから、パルスがリセットに流れるようにする。

 

これで、1ページ目の時は「次へ」のみフォーカスされ

2ページ目に行ったら「戻る」「閉じる」のボタンを

コントローラー、マウス、キーボードで選択することができるようになる。

 

 

ちびちびしたブラッシュアップばかりで

派手な開発はできていないが

こうして一つずつできることを増やしていくのもいいものだなぁ・・・