みつまめ杏仁

アンリアルエンジン(UE4)でGUIを作るためにゴニョゴニョしてます。UIデザイナーの皆様の助けになれば幸いです。

スライダーUIを並べて操作してみる 《おまけ》

キーリピート処理の説明用にスライダーUIを作ってみたら、なんとなくいい感じになってきたので調子に乗って”初期設定に戻す”機能を追加してブループリント インターフェイスまで扱うとこまできたのですが、もうひとつ「ミュート」の切り替えができるようにして完了にしようと思います。

f:id:hiyokosabrey:20180220225350p:plain

 

前回の記事はこちら

 キーリピート機能をつくってみる - みつまめ杏仁

スライダーUIを並べて操作してみる - みつまめ杏仁 

スライダーUIを並べて操作してみる 《続き》 - みつまめ杏仁

 

アイコン

まずはアイコンの仕込みから

 

テクスチャは簡単な2パターンを用意します。2つの画像に分けてもよかったりしますが、今回はマテリアルで切り替えます。

f:id:hiyokosabrey:20180220225549p:plainSize: 96x96

 

画像をテクスチャとしてインポートしたら、そこから Create Material します。

f:id:hiyokosabrey:20180220230054p:plain

UVスクロールさせるだけのシンプルなマテリアルです。

 

 

Interface

インターフェイスにあとひとつ関数名を追加します。

これは A とか 〇 とかの「決定」ボタンを押したときに呼び出すイベント用です。

f:id:hiyokosabrey:20180221223507p:plain

コンパイルして閉じます。

ここでちょっと注意が必要なのが、インターフェイスを編集して保存すると、そのインターフェイスをセットしているブループリント全てが、再コンパイル対象になってしまうということです。

f:id:hiyokosabrey:20180221224142p:plain

なので、UE4を閉じるときに、普段触っていなかったブループリントが「save する?」

って訊いてきて慌てることがあります。インターフェイスを触るときは、心の準備をしてから触るようにしましょう。エラーが出てるとマズいので、アスタリスクのついたアセットは、面倒ですが一度開いてコンパイルしてから閉じるようにします。

 今回のスライダーのWidgetはそのまま編集をします。

 

 

UMG

まずはスライダーWidgetのキャンバスにアイコンを配置します。

f:id:hiyokosabrey:20180220230852p:plain

Imageパーツを表示したいサイズに調整して、作っておいたマテリアルをセットしてやります。

 

Widgetブループリント

つぎにGraphの編集です。

まず、 ブーリアン型の変数 "isMute" を一つ追加します。

f:id:hiyokosabrey:20180221225227p:plain

 

この変数を使って見た目を切り替える関数 "switchMuteDisp" を用意します。

f:id:hiyokosabrey:20180221225613p:plain

今回 ミュートのON / OFF で変更するのは3パーツ。

f:id:hiyokosabrey:20180221230435p:plain

扱う値が違うので結果的に3種類のSelectノードを使うことになりました。

Selectノードは ブーリアン型の値、 True か False を判定して、あらかじめ決めておいた対応する値を取り出してくれる大変便利なノードです。Brunch ノードで組むこともできますが、白いラインが分岐することを考えると、Selectノードを使う方がスッキリして見えます。

つないでみて気づくのですが、テキストのカラーについては SlateColor と呼ばれる特殊なカラー値なので、LinearColor が使えません。さらに面倒なことにSelectノードの上下にならんだピンの扱いがなぜか逆という・・・

 

さてさて 見た目をチェンジする関数ができたところで、初期設定用の関数に追加した変数を加えます。

f:id:hiyokosabrey:20180221231416p:plain

新しく引数(Inputs)ピンも追加。最後に、できたての見た目チェンジ関数をつなぎます。

 

あとはボタンを押したときに呼ばれるイベント。

f:id:hiyokosabrey:20180221231754p:plain

ブーリアン型の変数 isMute の内容をスイッチングします。スイッチングしたあとは見た目に反映するためにつくった関数をつないでいます。

これでスライダー用のWidgetは完成です。

 

制御用Widget

 スライダーWidgetの 初期設定用の関数に引数を追加したので、ノードが変化しているのが確認できます。

f:id:hiyokosabrey:20180221232348p:plain

 

前回の記事でリセットするイベントを作りましたが、そこにノードを追加します。

f:id:hiyokosabrey:20180221232619p:plain

単純にIndexFocus の値が3 以外なら、onDecide のイベントを呼ぶようにします。

これで、できあがりです。

 

再生して確認してみましょう。

f:id:hiyokosabrey:20180221233313g:plain

うまくいきました。

ただこの操作はユーザーが気づきにくいので、画面の隅にでも操作ガイド的なナビ表示があった方いいでしょうね。マウスクリックを受け付けるなら、おそらく直接スピーカーのアイコンを触るので心配なさそうですが、そうなるとアイコンのデザインも、もう少しボタン感のある見た目にしないといけないですね。

 

ひとまずスライダーUIに関してはここまでにします。

ではでは

ステキなスライダーUIライフを!