HandleUtility.PickGameObject
を利用すれば対象位置のオブジェクトを取得できますが、すべて取得できません
そのため、Ignoreに取得したオブジェクトを詰め込むことですべてのオブジェクトを取得することができます
using System.Collections.Generic; using UnityEditor; using UnityEngine; public static class SceneViewUtility { [InitializeOnLoadMethod] private static void Initialize() { SceneView.duringSceneGui -= SceneViewOnGUI; SceneView.duringSceneGui += SceneViewOnGUI; } private static void SceneViewOnGUI(SceneView sceneView) { var e = Event.current; if (e.type == EventType.MouseDown) { var hitList = new List<GameObject>(); while (true) { var picked = HandleUtility.PickGameObject( e.mousePosition, false, hitList.ToArray()); if (picked == null) break; hitList.Add(picked); } if (hitList.Count <= 0) { Debug.Log("Not Hit"); } else { Debug.Log($"Hit {hitList.Count}"); } } } }