[UI] ボタンでイベントを送信する

 記事作成 2019年6月
PlayMaker 1.9.0 / Unity 2018.2.6f1

追記) 2020/04/28 現在のPlayMaker には標準アクションとして
[ UI Button On Click Event ]があります。元記事のようにプロキシ設定をしなく
ても、ステート内でボタンの押下を待機、イベント分岐させることが出来ます。

元記事の内容は、ボタン側から常にイベントを発生させられる状態にしておくも
ので、この方が良い場合もあるかもしれません。

追記) 2020/09/14
元記事の Play Maker U Gui Component Proxy 及び、アクションカテゴリ「u Gui」
のアクションを使うためには、エコシステムか公式アドオンページ
「 Package for uGUI Proxy With Full set of Actions 」を入手し、インポートしてください。
アクション内容は既存の「 UI 」アクションと類似のものです。

------------------------------
*元記事
ボタンを押すことで、シーン上のオブジェクトにイベントを送ります。
動画では、「押す」ボタンをクリックすると、シーン上のCubeが回転しています。

----------------------------------------------
ボタンを作成し、Cubeも配置します。

----------------------------------------------
Cubeは「基本的な使い方」でも使ったものです。
イベント「ボタンを押した」を受け取ると、例の?[Rotate]で回転を始め、
Time 2 その状態を続けた後、「回転停止」へ遷移します。

状態「idle」と「回転停止」は空(アクションなし)で構いません。

----------------------------------------------
当然イベント「ボタン押した」は作成しておきます。

----------------------------------------------
Button 側のインスペクタを見ます。
[Add Component] から[Play Maker U Gui Component Proxy]
を検索し選択します。UITargetは自身(Use Owner)
イベント送信先TargetはCube
送信イベント名は「ボタン押した」です。テキストを打つかコピペします。

これで、ボタンをクリックすると、Cubeへ、イベント「ボタンを押した」が送信され
最初の動画のように動作します。

----------------------------------------------
@イベント送信先Targetを[Broad Cast All]にすることもできます。
シーン上のすべてのオブジェクトを対象に送信します。
その場合Cubeのイベントにはチェックを入れグローバル化する必要があります。

複数のオブジェクトをボタン一つで動作させたいときなどに。

----------------------------------------------

はじめの例のようにCube一つだけにイベントを送信する場合は、
Buttonのインスペクタにある、Button(Script)の On Click()
から、オブジェクトとFMS(状態遷移)を選択して動作させることもできます。

またUIボタンは、スマートフォン向けにビルドした際は、タッチで作動します。

0 件のコメント:

コメントを投稿