プログラミング逆引き辞典

~ 多言語対応のプログラミングレシピ ~

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