テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

UnityのuGUIで階層構造を持ったスクロールビューを作る

目次

階層構造を持ったスクロールビュー

f:id:tsubaki_t1:20150209231328g:plain

今回はスクロールビュー(横)の中にスクロールビュー(縦)があるような構造のスクロールビューを作成します。

f:id:tsubaki_t1:20150209231006p:plain

uGUIは子がScrollRectを持っている場合、親へのイベントを握りつぶしてしまうため、この構造を作るのは少し工夫が必要でした。

 

それを解決する方法が、Unity 4.6 UI and nested ScrollRect |で紹介されていました。要するに、子のScrollRectがイベントを受け取ったら親にそのまま渡せば良い…と。

 

またインターフェースを取得する仕組みが綺麗だったので、そこだけ独立して使えるようにしました。これで他タイプのイベントでも同様に取得することが出来そうです。

ソースコード

gist.github.com

 使い方

使い方は単純、子のScrollRectの代わりにNestedScrollRectを使うだけです。

f:id:tsubaki_t1:20150209232721p:plain

感想

どちらかと言えば階層構造を持つScrollRectを作るほうが大変です。

もし絶対に横もScrollRectで作らなければならないといった事が無いのであれば、TweenやAnimatorを使い「横にスワイプしたら現在使っているスクロールバーを切り替える」ギミックを追加するほうが良いかもしれません(Tweenもしくはアニメーション制御が必要になりますが・・・)

その場合もDragEventがScrollRectに握りつぶされてしまうので、NestedScrollRectで回避する必要がありそうです。

f:id:tsubaki_t1:20150209235852g:plain