はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】EventTriggerをスクリプトからアタッチする方法

はじめに

クリックされた処理をしたいときはみなさん何を使うでしょうか?
私はよくEventTriggerを用いて実装するのですが、Prefabにはシーン上のオブジェクトを参照できなかったりといくつか制限があったりします。
そういうときにはEventTriggerをスクリプトからアタッチしたりする方法が有効だと思います。

本題

完成形のソースコードをぺたっとします。

obj.AddComponent<EventTrigger>();
EventTrigger trigger = obj.GetComponent<EventTrigger>();
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerDown;
entry.callback.AddListener((eventDate) => { hoge(); });
trigger.triggers.Add(entry);

少しわかりにくいので簡単な説明をすると、
objはEventTriggerをアタッチしたいGameObject、
hoge()は任意のメソッドのことで、hoge()をDebug.Log()等に変更できます。

これでどんなEventTriggerに相当するかというと、
f:id:hanaaaaaachiru:20180921151101j:plain
やや異なるところがありますが、ほぼこれと同じ感じになります。

さいごに

やや分かりにくいコードがいくつかありますが、もっと知識を深めようと思ったら公式のスクリプトリファレンスを見てみてください。
docs.unity3d.com