Unity

uGUIに当たっているかを調べる

More than 3 years have passed since last update.

Physics.Raycastで調べたいオブジェクトとuGUIが混在している場所で、

UIに当たっていたらRaycastを除外したい時などに利用できます。

public static bool IsUGUIHit(Vector3 _scrPos){ // Input.mousePosition

PointerEventData pointer = new PointerEventData (EventSystem.current);
pointer.position = _scrPos;
List<RaycastResult> result = new List<RaycastResult> ();
EventSystem.current.RaycastAll (pointer, result);
return (result.Count > 0);
}

UI Imageなど、UIの当たりを検出したくない場合は

該当のUIに下記のスクリプトをアタッチすることで実現できます。

using UnityEngine;

using UnityEngine.EventSystems;
using UnityEngine.UI;

public class UIIgnoreHit : Button, ICanvasRaycastFilter {
public bool IsRaycastLocationValid (Vector2 sp, Camera eventCamera){
return false;
}
}