UnityのEvent Triggerの使い方をマスターした!
どうも、Linです。マスク、5枚仕入れました。
もはや趣味となりつつあるユニティの勉強。
Unityの書籍をこれまで数えきれないぐらい読んで来ましたが、つい先日、また新たに「Unityの寺子屋」を読み始めたのです。
内容はわかりやすく和尚のキャラクターが出てくるので最高。たぶん、毎日この書籍を読むのが楽しみです。
読んでいてものすごく参考になるのですが、中でも
UnityのEvent Triggerの使い方
を解説しているのが参考になりました。
このEvent Triggerとは何かというと、
何かアクションを起こしたら、ある関数を呼び出せる
というものです。
例えば、とあるゲームオブジェクトにカーソルで触ったら、音楽を鳴らすということができるわけですね。
Event Triggerの存在を知る前は、ボタンで関数を呼び出せていたのですが、buttonでは、
クリックのみでしかアクションを登録できない
という欠点があったのです。
しかし、このEvent Triggerを使えば、クリック以外のアクションに対しても関数を呼び出せるので、ゲーム作成の自由度が増しますね。
3分でわかる!ユニティのEvent Triggerの使い方
ってことで、UnityのEvent Triggerの使い方をマスターしたのでメモしておきますね。
サンプルとして、
トマトにカーソルを合わせたら消える
というゲームを作っていこうと思います。

Step1. ゲームオブジェクトを配置する
まずはゲームオブジェクトを配置します。
UIのImageをヒエラルキーに配置し、
SourceImageにトマトの画像を設定します。
すると、こんな感じでゲームビューにトマトの画像が設置されることでしょう。
これで準備完了です。
Step2. 呼び出したい関数を書く
Event Triggerで呼び出したい関数をスクリプトに書きましょう。
今回は「トマトにカーソルを合わせると消す」という関数を書いていきますよ。
ってことで、スクリプト「Tomato.sc」を作成。
このTomato.scを次のように編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Tomato : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } public void Touch(){ Destroy (this.gameObject); } } |
Event Triggerで呼び出す関数「Touch」はパブリック (public) なものとして宣言します。
こうすると、スクリプトのクラス外からも呼び出せるわけですね。
1 2 3 4 5 |
public void Touch(){ Destroy (this.gameObject); } |
この関数では何をやっているかというと、
スクリプトをアタッチしたゲームオブジェクトを削除する
という処理をしてます。
Destroyメソッドは引数に指定したオブジェクトを削除するので、this.gameObject(スクリプトをアタッチしたゲームオブジェクト)を取得して引数に設定しているわけです。
このスクリプト(Tomato.sc)をトマトの画像にアタッチします。
Step3. Event Triggerをコンポーネントに追加
次に、Event Triggerコンポーネントをトマトの画像に追加します。
Tomatoの画像の「Add Component」から「Event Trigger」を設定しましょう。
Step4. トリガーのタイプを選択
関数を呼び出すトリガーを選択します。
どんなアクションをしたら関数を呼び出すのかを決めるわけですね。
UnityのEvent Triggerでは次のトリガーが用意されています(Unity公式レファレンスより)。
OnBeginDrag | ドラッグが始まる前に呼び出されます。 |
OnCancel | Cancel イベントが発生すると、EventSystem に呼び出されます。 |
OnDeselect | 新しオブジェクトが選択されると、EventSystem に呼び出されます。 |
OnDrag | ドラッグする間にポインターが移動するたびに、EventSystem に呼び出されます。 |
OnDrop | オブジェクトがドロップを取得すると、EventSystem に呼び出されます。 |
OnEndDrag | ドラッグが終了すると、EventSystem に呼び出されます。 |
OnInitializePotentialDrag | ドラッグが感知された時ではなく、ドラッグ開始が有効になる前に BaseInputModule は呼び出されます。 |
OnMove | Move イベントが発生すると、EventSystem に呼び出されます。 |
OnPointerClick | Click イベントが発生すると、EventSystem に呼び出されます。 |
OnPointerDown | PointerDown イベントが発生すると、EventSystem に呼び出されます。 |
OnPointerEnter | ポインターがこの EventTrigger に関連したオブジェクトに入るとき、EventSystem に呼び出されます。 |
OnPointerExit | ポインターがこの EventTrigger に関連したオブジェクトを出るとき、EventSystem に呼び出されます。 |
OnPointerUp | PointerUp イベントが発生すると、EventSystem に呼び出されます。 |
OnScroll | Scroll イベントが発生すると、EventSystem に呼び出されます。 |
OnSelect | Select イベントが発生すると、EventSystem に呼び出されます。 |
OnSubmit | Submit イベントが発生すると、EventSystem に呼び出されます。 |
OnUpdateSelected | この EventTrigger に関連するオブジェクトが更新されると、EventSystem に呼び出されます。 |
トリガーを選択するには「Add New Event Type」を押して望ましいものを探します。
今回はその中から「Pointer Enter」を選びましょう。
こちらは「マウスのカーソルがゲームオブジェクトに触れたら」発動するトリガーになりますね。
Step5.呼び出す関数を設定
Event Triggerが発動した時に呼び出す関数を設定します。
Event Triggerコンポーネントの「+」マークをクリックし、先ほどのスクリプトがアタッチされているゲームオブジェクトを探します。
今回でいうと、ImageTomatoという「トマトの画像」のゲームオブジェクトになりますね。
あとは「No function」というタブからスクリプトのコンポーネントを探して、その中から呼び出したい関数を選択します。
今回は「Tomato.sc」というスクリプトの「Touch()」という関数を呼び出しましょう。
これでUnityのEvent Triggerの設定は完了です!
UnityのEvent Triggerでいろんなトリガーを使ってみよう
以上がUnityのEvent Triggerの使い方でした。
- ゲームオブジェクトを配置
- 呼び出したい関数を書く
- Event Triggerをコンポーネントに追加
- トリガーのタイプを選択
- 呼び出す関数を設定
無事にEvent Triggerを使えるようになると、こんな感じで、マウスのカーソルが触れると、トマトが消えるゲームが完成することでしょう。
Event Triggerによって、クリック以外のトリガーで関数を呼び出せるようになりますので、ぜひともこの記事でEvent Triggerの使い方をマスターしていきましょう。
「もっとUnityの技を本格的に勉強したい!」
という方は「Unityの寺子屋」で勉強してみてくださいね。
それでは!
Lin

おそらく、ブロガー。現在ホテル暮らしで全国フラフラしています。
ネット広告代理店に1年3ヶ月勤め上げ、独立をして丸4年が経ちました。今年でフリーランス 5年目。
質問・ご意見・相談があればLINEで受け付けていますのでお気軽にどうぞ 。
コメントを残す