0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

クリックを検知したい時

Last updated at Posted at 2019-06-17

あるGameObjectをクリックしたときに、何か処理をしたい場合に使えるEventSystemとIPointerClickHandlerについて書きます。

#まずEventSystemとは。

EventSystemとは、

キーボード、マウス、タッチやカスタムの入力に基づいて、アプリケーション内のオブジェクトにイベントを送信する方法

です。(Unityマニュアルより)。
つまり、EventSystemを使えば、あるオブジェクトがクリックされたりした時に、そのオブジェクトにイベントを送ることができるということです。

この中で、この記事では ”IPointerClickHandler"を用いて、クリックされたオブジェクトにイベントを送信する方法について述べます。

IPointerClickHandlerを使うタイミングとは、UIではないオブジェクトに対してイベントを飛ばすときです。
UIの一つであるButtonなどに対しては関数とButtonをそのまま対応させることができますが、UIでないゲームオブジェクトに対して「それがクリックされた時に〇〇する」という処理をするためには

「EventSystemが該当シーンに存在すること(クリックを完治するため)」
「PhysicalRaycasterがカメラにアタッチされていること(UIでないGameObjectに対して、どれがクリックされているのかを判別するため)」

が必要です。

それでは、実際にどのように使うのかをみてみましょう。

C#.qiita.cs
using UnityEngine;
using UnityEngine.EventSystems;

public class qiita : MonoBehaviour, IPointerClickHandler{
	private PieceInfo _pieceInfo;
	void Awake(){
		_pieceInfo = GetComponent<PieceInfo>();
	}

	//クリックされたオブジェクトに対して実行している。
        public void OnPointerClick(PointerEventData eventData){
        Debug.Lig(name + "がクリックされた");
        }
}

このようにすることで、実際にクリックされたGameObjectの名前をコンソールに表示することができます。
「クリックされたら〇〇する」という処理をしたい時にぜひお使いください。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?