超概要
普通のcolliderとNGUIで作ったボタン要素が被った場合、
マウスイベントはどっちで発火するか調べた
結果:普通のcolliderとNGUIの両方で発火する
環境
Unity 2018.4.31f1
NGUI: Next-Gen UI 2018.3.0f
経緯
やりたいこと
既存プロジェクトのマウスイベントをマウスもタッチパネルも使えない環境に対応することになった
プログラムでマウスイベントを呼びたいがNGUIとUnityのマウスイベントがわからなかったので調べた
hierarchyに普通のカメラと普通のコライダーも混ざった場合、
クリック判定はどうなるのか?
実験
結果
どっちも当たる
上の画像ならbuttonの判定と後ろのCubeの判定の両方が来る
※OnMouseイベントでテスト
NGUIはUnityのクリック判定を無視して独自に処理するらしい
なので
NGUIのUICameraを書き換えてプログラムからマウスイベントを呼べるように修正し、
UICamera以外のカメラからもRaycastしてマウスイベントを無理やりコールすることで解決
追記(2021/06/05)
uGUIでも同様の結果になりました
全部重なったところを押すと
・uGUIで一番上の要素
・uGUI以外で一番上の要素
のマウスイベントが呼ばれるのでなんじゃこれ感ありますね