自作マウスカーソルをウィジェットとして表示する・第2弾 #UE4
※現在はもっといい方法が見つかっています
imoue.hatenablog.com
imoue.hatenablog.com
imoue.hatenablog.com
「自作のイラストを使ったマウスカーソルを作る、というのは前にもやったんだけど」
妹「やった気がする」
「今日やるのもだいたい同じ、ウィジェットを使う方法なんだけど、もうちょっと良い方法を見つけた」
「前回はマウスカーソル入りのウィジェットがあって、その中のカーソル画像ウィジェットを動かすという考え方だった。今回はマウスカーソルを完全に独立したウィジェットとして作ってる」
「別々にウィジェットを生成して、別々にAddToViewportする。これでボタンのウィジェットと、カーソルのウィジェットが別々に追加される。そのままだとクリックした時にカーソル自体が反応するから、可視性の設定で反応しないようにしておく」
妹「でも、それだとどっちが上かわからなくなるのでは? カーソルが下になったらあれだし」
「あれしないように、AddToViewportにはZOrderというパラメータがある。普段は三角ボタンで折りたたんであるけど、ここに数字を入れると、重ね合わせ順を操作出来ることがわかった」
「マウスの移動操作は、GameModeの中のブループリントに書いてある。Tickの中でカーソル位置を調べて、ウィジェットを動かしてる。この方法の利点は他のレベルでも同じようにカーソルが出せるというところ。使うウィジェット全部にカーソルを入れて回る必要がないし、別のゲームでの使い回しもやりやすい」
妹「操作がGameModeの中ということは、マウス操作の設定としてはSetInputModeGameAndUIにしてるの?」
「今回はSetInputModeUIOnlyにしてる」
妹「??? それってウィジェットにしか反応しないという噂だったのでは?」
「SetInputModeUIOnlyにあってる時は、こういう感じのインプットアクションや、インプットAxis系イベントは無効になる。ただ、今回使ったのはTickイベントで、それは普通に動く。そしてマウス位置の取得も出来る。ウィジェットの移動にも当然問題ないから、UIOnlyでも自作カーソルは動かせることになる」
妹「うーん、でもそれってなんか、マウスカーソルだったらいいけど、動いちゃいけないやつも動かせてしまいそうな」
「そのへんは作り方次第だから。そういう特別な意図が無い場合は、Tickの中でマウスやキーボードの処理をしない方がいいと思うけど、必要な時は抜け道として使える」
※体調不良のため翌日分の記事はお休みします