見出し画像

【Unity】画面タップ時にuGUIを判別する

UnityでARアプリを制作する際に、Rayを飛ばしてAR的な操作(例:タップした箇所にオブジェクトを配置)をする場合とuGUIで配置したボタン操作を分ける方法です。

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class ScreenTap : MonoBehaviour
{
   public static bool IsOnUI() {
       PointerEventData pointer = new PointerEventData(EventSystem.current);
       pointer.position = Input.mousePosition;
       List<RaycastResult> result = new List<RaycastResult>();
       EventSystem.current.RaycastAll(pointer, result);
       return result.Count > 0;
   }
}

staticなメソッドとして記述することでどこからでも呼べるようにしています。AR FoundationのRaycastManagerでRayを飛ばす前後で呼び出して使用します。

このコードではタップされた位置からRayを飛ばして衝突したuGUIの個数、つまりuGUIが含まれているか否か(count > 0)で判別を行っていますが、RaycastResultからuGUIのGameObject等も取得できるので、タグを仕込んで反応させたくないuGUIを設定することも可能です。🌱

参考



この記事が気に入ったらサポートをしてみませんか?