UE4_ウィジェットで2ページあるときに、ボタンのフォーカスを切り替える方法(コントローラーでもマウスでも)
しっかり書くつもりはない。
需要があるか不明だから・・・
コントローラーでもキーボードでもマウスでも
ウィジェットで配置したボタンを操作させる機能を実装したが
ウィジェットの中に2ページ作って
1枚目、2枚目と交互に表示できるようボタンを配置した場合
フォーカスを切り替えなければならない。
自分の場合は、1ページ目は「次へ」のボタンだけだからいいけど
2ページ目は「戻る」「閉じる」の2つもあるから、さあたいへん。
フォーカスの処理は、ウィジェットのイベントグラフに記載するが
Tickで何度もフォーカスさせる必要がある(フォーカス無くなると行方不明になるから)
まず、ボタンの押下時に、ブーリアン変数で
そこが1ページ目かどうかを格納させる。
IsFirstPage、とかいうブーリアンで
「次へ」のボタン処理でFalseにして
「戻る」ボタンでTrueに戻す。
Tickにブランチをつないで
そこが1ページ目なら「次へ」のボタンだけフォーカスさせる
2ページ目なら、DoOnceとボタンのフォーカス処理をつなぐ。
ただ、このままだと、どっちにフォーカスされているのか
見た目でわからない。
そこで、両方のボタンのオパシティを落として
選ばれている場合は1.0にする処理をつなぐ。
こんな感じ
ForEachLoopで巡回してもらう形にしてる。
DoOnceと2ページ目のボタンフォーカス処理は、
このぐちゃぐちゃの処理の、すべての終わりからつながっている必要がある。
ブランチのFalseで分岐しているところも、全部。
そしてDoOnceは1ページ目に戻ったらリセットされないといけないので
1ページ目かどうかを判断したTickの最初のブランチで
1ページ目のフォーカス処理のあとから、パルスがリセットに流れるようにする。
これで、1ページ目の時は「次へ」のみフォーカスされ
2ページ目に行ったら「戻る」「閉じる」のボタンを
コントローラー、マウス、キーボードで選択することができるようになる。
ちびちびしたブラッシュアップばかりで
派手な開発はできていないが
こうして一つずつできることを増やしていくのもいいものだなぁ・・・