ぱふの自由帳

ぱふの技術ブログ。メインはUnity。最近はUnity1Weekの放送してます。良ければフォローお願いします、、

クリックで一番上にあるオブジェクトだけを取得する

概要

「重なっているオブジェクトの一番上を取得したい…!」「UIをクリックした際にUIと重なっているオブジェクトが反応しないようにしたい!」という方に役に立つかもしれません。

以下のような動作をするように実装していきます!

f:id:PafuOfDuck:20170615145618g:plain

実装

1.適当なオブジェクトを作成します。

2.以下のスクリプトをアタッチします。

Cube.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems; // 追加忘れないように!

public class Cube : MonoBehaviour, IPointerDownHandler{

    public void OnPointerDown(PointerEventData eventData){
        Debug.Log (gameObject.name);
    }

}

3.Cameraに以下のコンポーネントをアタッチします。Add Componet -> Event の中にあります。

f:id:PafuOfDuck:20170615151204p:plain

4.HierarchyにEventSystemがなければ以下のようにして追加します。

f:id:PafuOfDuck:20170615151650p:plain

【完成】

おわり

IPointerDownHandlerOnPointerDownを変更することでダブルクリックに対応できるようになります。Unityのスクリプトリファレンスで探してみてください!
クリックした位置にRayを飛ばして自分で場合分けをするのが面倒!って方におすすめですよ。

初心者の方や熟練者の方を問わずTwitterのフォローお待ちしています…(`・ω・´) ヨロシク!