>>742
全然違うw
全く理解してないようなので説明しとく
まずRaycastには以下の3種類がありそれぞれ対象が異なるが、対象となるコンポーネントがないと反応しないのはどれも同じ

Physics.Raycast →Collider(3D)
Physics2D.Raycast →Collider2D
EventSystem.RaycastAll →uGUIのGraphic

そしてButton.onClickは全く層が違う、これは連続してRaycastした結果によるコールバックだ
ButtonコンポーネントはuGUIのコンポーネントなのでGraphicRaycasterが継続的にRaycastを行い、その結果クリックされたと評価された場合にUnityEvent型の変数であるButton.onClickのInvoke()がコールされるという流れ
またButtonはステート間のトランジション等の機能なども有していてとても冗長だからボタン以外の用途に使うなw

単純にスクリーン座標にある何かを取りたければ3種のRaycastのいずれかひとつ又は複数を使えばいい

2D/3D/uGUIは完全に分離して考え別々に扱うこと
画面上で重なって見えるのは構わんが同列に扱ったりコンポーネントを混ぜるのは論外

Button.onClickとRaycastと並列に扱う事自体的はずれにも程があるってぐらいおかしいのよ