Touch がUI上かどうかを判定する方法
Unity エディターでの操作
Cnvas 上の全てのUIに任意のタグ(「UI」等)を付ける。
サンプルコード
private bool TouchingUI()
{
Touch[] touches = Input.touches;
for (int i = 0; i < touches.Length; i++)
{
PointerEventData pointData = new(EventSystem.current);
pointData.position = touches[i].position;
List<RaycastResult> rayResults = new();
EventSystem.current.RaycastAll(pointData, rayResults);
for (int j = 0; j < rayResults.Count; j++)
{
if (rayResults[j].gameObject.CompareTag("UI"))
return true;
}
}
return false;
}