Unity3D EventTriggerが反応しない時の対処法
■Unity3Dでオブジェクトをクリックした際に「EventTrigger」が反応しないという場合は、恐らく「Image」以外のオブジェクトをEventTriggerに使用しているという場合が考えられる
上記の場合の正しいEventTrigger設定方法を解説する
【ポイント】
・「Main Camera」に「Physics Raycaster」を追加する ← 特にこれを忘れがち
・「EventSystem」オブジェクトを追加する
①「Main Camera」を選択した状態で「Add Component」を押下し、「Event」⇒「Physics Raycaster」を押下
「Physics Raycaster」が設定されていることを確認
②EventTriggerを設定するオブジェクトを作成(今回はCubeを作成)
ヒエラルキーウィンドウから「Create」⇒「3D Object」⇒「Cube」を押下
③プロジェクトウィンドウから「Create」⇒「C# Script」を押下し、スクリプトを作成
スクリプト名は「CubeManager」とする
④③で作成した「CubeManager」スクリプトをCubeにアタッチ(ドラッグする)
スクリプトがアタッチされていることを確認
⑤ヒエラルキーウィンドウから「UI」⇒「Event System」を押下し、「EventSystem」オブジェクトを追加
⑥③で作成したスクリプトに「Cube」をクリックした際にデバッグログに「test」と出力するスクリプトを記述
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeManager : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
// Cubeを押下した際に実行さえれるイベント
public void Pushed() {
// デバッグログに「test」と出力
Debug.Log("test");
}
}
⑦「Cube」オブジェクトを選択し「Add Component」⇒「Event」⇒「Event Trigger」を押下
⑧「Cube」オブジェクトを選択した状態で「Add New Event Type」⇒「PointerClick」を押下
⑨「+」を押下後、ヒエラルキーウィンドウの「Cube」オブジェクトを「Event Trigger」にドラッグ
⑩「No Function」⇒「Cube Manager」⇒「Pushed()」を押下
⑪実行して「Cube」をクリックするとデバッグログが「Console」に出力されることを確認する
それでもダメなら「Physics.Raycast」を使う
「Physics.Raycast」の使い方はこちら→Unity3D 【詳細】Physics.RayCast