クリックで一番上にあるオブジェクトだけを取得する
概要
「重なっているオブジェクトの一番上を取得したい…!」「UIをクリックした際にUIと重なっているオブジェクトが反応しないようにしたい!」という方に役に立つかもしれません。
以下のような動作をするように実装していきます!
実装
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 の中にあります。
4.HierarchyにEventSystemがなければ以下のようにして追加します。
【完成】
おわり
IPointerDownHandler
やOnPointerDown
を変更することでダブルクリックに対応できるようになります。Unityのスクリプトリファレンスで探してみてください!
クリックした位置にRayを飛ばして自分で場合分けをするのが面倒!って方におすすめですよ。