目次
階層構造を持ったスクロールビュー
今回はスクロールビュー(横)の中にスクロールビュー(縦)があるような構造のスクロールビューを作成します。
uGUIは子がScrollRectを持っている場合、親へのイベントを握りつぶしてしまうため、この構造を作るのは少し工夫が必要でした。
それを解決する方法が、Unity 4.6 UI and nested ScrollRect |で紹介されていました。要するに、子のScrollRectがイベントを受け取ったら親にそのまま渡せば良い…と。
またインターフェースを取得する仕組みが綺麗だったので、そこだけ独立して使えるようにしました。これで他タイプのイベントでも同様に取得することが出来そうです。
ソースコード
使い方
使い方は単純、子のScrollRectの代わりにNestedScrollRectを使うだけです。
感想
どちらかと言えば階層構造を持つScrollRectを作るほうが大変です。
もし絶対に横もScrollRectで作らなければならないといった事が無いのであれば、TweenやAnimatorを使い「横にスワイプしたら現在使っているスクロールバーを切り替える」ギミックを追加するほうが良いかもしれません(Tweenもしくはアニメーション制御が必要になりますが・・・)
その場合もDragEventがScrollRectに握りつぶされてしまうので、NestedScrollRectで回避する必要がありそうです。
関連
追記:もっと賢い方法