【Unity】スクリプトからEventTriggerにEventを追加する

スクリプトからEventTriggerのイベントを追加したい!

ということがあってやり方を調べてまとめたので紹介します。

目次

今回のお題

今回はEventTriggerを使って真ん中のオブジェクトをクリックしたら”クリックされました!”

とログ出力をしてほしいとします。

エディタから手動で設定する場合はオブジェクトにEventTriggerコンポーネントをアタッチし、

実行させたい関数を設定します。

こちらを手動で設定するのではなく、スクリプトから設定したいとします。

スクリプトからEventTriggerにEventを追加する

【ソースコード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class ExcuteEvent : MonoBehaviour
{
    // EventTriggerを入れたいゲームオブジェクト
    public GameObject Square;
    void Start()
    {
        // ゲームオブジェクトにEventTriggerコンポーネントをアタッチ
        Square.AddComponent<EventTrigger>();

        // ゲームオブジェクトからEventTriggerコンポーネントを取得
        EventTrigger trigger = Square.GetComponent<EventTrigger>();

        // EventTrigger.Entryのインスタンスを作成
        EventTrigger.Entry entry = new EventTrigger.Entry();

        // クリックイベントを設定
        entry.eventID = EventTriggerType.PointerClick;

        // クイックイベントが発生した時、OnClickメソッドを呼び出す
        entry.callback.AddListener((x) => OnClick());
        // entryをイベントトリガーに追加
        trigger.triggers.Add(entry);

    }

    public void OnClick()
    {
        Debug.Log("クリックされました!");
    }

}

こちらをSquareオブジェクトにアタッチし実行させると次のようになります。

シーンが始まるとEventTriggerがぴょこんとSquareオブジェクトにアタッチされ、

クリックするとログが出力されるようになりました!

<参考記事>

はなちるのマイノート
【Unity】EventTriggerをスクリプトからアタッチする方法 - はなちるのマイノート はじめに クリックされた処理をしたいときはみなさん何を使うでしょうか? 私はよくEventTriggerを用いて実装するのですが、Prefabにはシーン上のオブジェクトを参照できな...
かさたな日記
自分用Unityメモ:EventTriggerにスクリプトからEventを追加する - かさたな日記 EventTriggerもButtonなどと同じように スクリプト側からEventを追加することができます。 ただ少しやり方が異なるのでメモしておこうと思います。 using UnityEngine.Even...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

電気制御設計→ITエンジニア
前職は電気系のエンジニアで物流倉庫などの設備を動かしていました。
現在はITエンジニアとして開発に従事。
業務では主にUnity、C#、.NETを利用。
現在、UnityとC#を用いて業務用スマホアプリを開発中。

コメント

コメントする

目次