LoginSignup
4
1

More than 5 years have passed since last update.

Unity PlayMakerでマウスクリック系システムイベントを受け取る(System EventsとUI Eventsの違いって?

Last updated at Posted at 2019-01-20

いきなり結論

  • System EventsのMOUSE UPなどのマウス系イベントを受け取るには、何らかのコライダが必要
  • UI EventsのUI CLICKを受け取るにはButtonコンポーネントが必要(これ公式に書いてあった)

Sent when a Button is pressed. Game object needs a Button component.
(公式ヘルプEventsより引用)

(ユーザーイベントを用意してInput系アクションでSend Eventする方法はここでは省略します)

はじめに(きっかけ)

2Dゲームで(こんなの)「ボタン押下」と「画面内マウスクリックでメッセージ送り」の両方をやるときに、System Eventsの「MOUSE UP」とUI Eventsの「UI CLICK」のどちらを使えばよいのかわからなかったので、調査・実験してみた。

前提情報

  • Unity 2018.3.0f2
  • PlayMaker 1.9.0.p5

試したこと

①2DでButton

2DプロジェクトでButtonオブジェクトに「MOUSE UP」「UI CLICK」イベントが届いたらDebug Log出力するFSMをやってみた。

スクショ.jpg

→ ボタンクリック時に「UI CLICK」イベントのみ届いた。

え?「MOUSE UP」は届かないの?

②2DでSprite

2DプロジェクトでSpriteオブジェクトに「MOUSE UP」「UI CLICK」イベントが届いたらDebug Log出力するFSMを(ry

→ クリックしてもどちらのイベントも届かなかった。

「UI CLICK」が届かないのはわかるけど「MOUSE UP」も届かない?
じゃあ「MOUSE UP」はどうやったら届くの??

③3DでCube

3DプロジェクトでCubeオブジェクトに「MOUSE UP」「UI CLICK」イベントが届いたらDebug Log出力(ry

→ クリック時に「MOUSE UP」イベントのみ届いた。

「MOUSE UP」届いた!じゃあ「MOUSE UP」が届く条件って?

④3DでCube(Box Collider無効)

3DプロジェクトでCubeオブジェクトの「Box Collider」コンポーネントのチェックボックスを外して無効にした状態で、「MOUSE UP」「UI CLICK」イベントが届いたらDebug Log出力(ry

→ クリックしてもどちらのイベントも届かなかった!

つまり、「MOUSE UP」に必要なのはコライダ!

⑤2DでSprite(Box Collider 2D追加)

2DプロジェクトでSpriteオブジェクトに「Box Collider 2D」コンポーネントを追加した状態で、「MOUSE UP」「UI CLICK」イベントが届いたらDebug Log出力するFSMを(ry

→ クリック時に「MOUSE UP」イベントが届いた!やったー!

おわりに

すみません、これがQiitaデビューです。
もし、記事の内容に間違いや修正すべき点などありましたら、優しく教えていただければ修正していきたいと思います。
取り急ぎざっと書いてみたので、あとで手を入れるかもしれません。
自分用備忘録として書いた部分もありますが、参考になれば幸いです。
ポエムでしたらすみません。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1