スクリプトから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にスクリプトからEventを追加する - かさたな日記
EventTriggerもButtonなどと同じように スクリプト側からEventを追加することができます。 ただ少しやり方が異なるのでメモしておこうと思います。 using UnityEngine.Even...
コメント