#ことの発端
Unityで作ったアプリをAndroidの実機で動かしてみたら、著しく反応が悪いボタンがあった。
具体的にはボタンの押下エフェクトは発生するが、押下された判定にならない(ButtonのOnClickメソッドが動かない)。
#原因
突き詰めたところ、ScrollViewの中に組み込んだボタンでのみ発生していることがわかった。
ScrollView外のボタンは押下してから指を動かしても、ボタン座標内であれば押下状態が継続されるが、ScrollView内のボタンは押下してから少しでも指を動かすと、押下状態が解除される。
どうやらこれは仕様らしい。こちらの記事を参考にした。
上記は全ての端末で発生する訳ではなく、ハードウェアや機種に依存する問題のようだ。
#解決策
該当のボタンに空のEventTriggerを追加するだけで解決した。
EventTriggerを追加することで、ScrollView外のボタンと同じ挙動になった。
ggった時にEventSystemのDragThresholdをいじるなど、色々な方法があったが影響範囲が大きそうだったので別の方法を試してみようと試行錯誤していたら、この方法で治ったというところ。
#参考
uGUIのスクロールビューにボタンを並べるとボタンが反応しにくくなる際の対応
ScrollRectの要素にあるボタンのタッチ反応改善について
UnityのScrollRectを拡張しよう