妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

UE4.16の新機能で、自作のハードウェアマウスカーソルを出す

f:id:una_unagi:20170608230737j:plain

https://www.unrealengine.com/ja/blog/unreal-engine-4-16-released
f:id:una_unagi:20170608232958p:plain

「4.16のリリースノートの日本語版が出てたから見てたんだけど、その中にハードウェアのカーソルのカスタム化っていうのが書いてあって、さっそく試してみたのが上の写真」

f:id:una_unagi:20170608232432p:plain

妹「このガブ太郎がカーソル?」

「そのガブ太郎がカーソル。前にスタンプ作った時のデータが手近なところにあったから。赤い矢印の方は最近UMGウィジェットとして作ってたやつで、それが残ってる状態」

妹「普通のカーソルは?」

「それはガブ太郎に置き換わってるから出せない」

妹「でも今日のやつはなんか写真が汚いね」

「ハードウェアカーソルにすると、スクリーンショットに映らないというか、妙にちっちゃくなるというか、しょうがないのでスマホでパソコン画面を写真に撮ったんだよ」

f:id:una_unagi:20170608232753p:plain

「プロジェクト設定の、ユーザーインターフェースのところで設定する。マウスカーソルって元々何種類かあるけど、特に何も設定してなければDefault(矢印)しか使ってないはずだから、これを置き換えればいい。別のを使ってる場合はそっちを設定する」

f:id:una_unagi:20170608233105p:plain

「説明の通りに、カーソルはpngで作ってcontentsフォルダに入れる。テクスチャアセットとしてじゃなくpngのままフォルダに入れる必要がある」

f:id:una_unagi:20170608233358p:plain

pngファイルを追加すると、エディタでこういうメッセージが出る。インポートしないを選ぶ。インポートの方を選んでも、テクスチャアセットが増えるだけだから、それ消せばいいけど、名前が同じアセットがあった場合上書きしちゃうから注意。セーブせずにプロジェクトを閉じれば助かるかも」

妹「ハードウェアカーソルの下に、ソフトウェアカーソルっていうのも書いてあるけど」

「それはなんか……元々あったみたい」

f:id:una_unagi:20170608233625p:plain

「ここでカーソルに使うウィジェットを指定すれば、別に自分でTickイベントで動かさなくても良かったという。精度もTick式より良さそうだった。Tick式カーソルの方が少し遅れてくる」

妹「ハードウェアカーソルとソフトウェアカーソルがどっちがいいの?」

「両方同時に出せないから、どっちが正確かはわからないし、処理性能についても不明。今のところわかってることとしては」

ハードウェアカーソル
・カーソルに使う絵はpng画像か、そのOSで一般的なカーソル用の形式
・今のところWindowsMacLinuxにのみ対応
・画像のどの位置がカーソルの中心点になるのか設定できる(HotSpot)
・ウィンドウの外にも絵が出る
スクリーンショットに写らない

ソフトウェアカーソル
・カーソルに使う絵はUMGウィジェット
・対応OSは不明
・HotSpotは固定(ウィジェットの中央部分?)
・ウィンドウの外にも絵が出る
スクリーンショットに写る

Tickイベントでカーソル動かす
・カーソルに使う絵はなんでもいい(たぶんウィジェットが一番簡単)
・本物のカーソルより少し遅れて動く(実用上は多分問題なし)
・ウィンドウの外に絵は出ない。ウィンドウの縁のところで見切れる
・カーソルが画面外に出た後も、画面内にカーソルが残る(対処法はあるかもしれない)

「こんな感じ。多分ハードウェアカーソルが良いから新機能で入れたんだと思うけど、ソフトウェアカーソルも悪くはなかった。あと4.16で同じカーソル種別に対してハードウェアカーソルとソフトウェアカーソルを両方設定すると、ソフトウェアカーソルが優先で、でもウィンドウ端とかでチラッとハードウェアカーソルが見えることがある。どっちか片方にした方がいい」