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;
}
}