title: Unity3D New Input System: Is it really so hard to stop UI clickthroughs (or figure out if cursor is over a UI object)?
body: <p>Even the official documentation has borderline insane recommendations to solve what is probably one of the most common UI/3D interaction issues:</p>
  <p>If I click while the cursor is over a UI button, both the button (via the graphics raycaster) and the 3D world (via the physics raycaster) will receive the event.</p>
  <p>The official manual:
  <a href="https://docs.unity3d.com/Packages/com.unity.inputsystem@1.2/manual/UISupport.html#handling-ambiguities-for-pointer-type-input" rel="noreferrer">https://docs.unity3d.com/Packages/com.unity.inputsystem@1.2/manual/UISupport.html#handling-ambiguities-for-pointer-type-input</a> essentially says &quot;how about you design your game so you don't need 3D and UI at the same time?&quot;.</p>
  <p>I cannot believe this is not a solved problem. But everything I've tried failed. <code>EventSystem.current.currentSelectedGameObject</code> is sticky, not hover. PointerData is protected and thus not accessible (and one guy offered a workaround via deriving your own class from Standalone Input Module to get around that, but that workaround apparently doesn't work anymore). The old <code>IsPointerOverGameObject</code> throws a warning if you query it in the callback and is always true if you query it in Update().</p>
  <p>That's all just mental. Please someone tell me there's a simple, obvious solution to this common, trivial problem that I'm just missing. The graphics raycaster certainly stores somewhere if it's over a UI element, right? Please?</p>