uGUIで無限スクロールビューを一定間隔で止まるように拡張するスクリプト
スマホのホーム画面のように一定間隔で止まるようなスクロールビューを実現しました。
uGUIで無限スクロールビューを一定間隔で止まるように拡張するスクリプト · GitHub
スクリプトはこちらの記事で紹介されている「無限スクロールビュー」の拡張となっています。
使い方
上記記事のScrollRectの部分をFixedScrollRectに置き換えてください。
ScrollRectのMovementTypeは同じように「Unrestricted」に変更しておいてください。
元に戻るスピードを調整したい場合は、const float POWERの値を書き換えてください。
実装
InfinityScrollを参照し、必要な値を取得しています。
ドラッグ(スクロール)は開始時と終了時の判定が取れるため、操作中は元に戻らないように状態管理をしています。
あとはUpdate()でどちら方向が近いかを判断し、元に戻る処理をしています。
課題
アニメーションはもう少し綺麗にしたいなって思いました。
また、スクロールしたあとに慣性みたいなのが働くと思うんですけど、慣性が働いている状態を取得する方法が分からなかったので、離した瞬間に止まり始めます。そのため拡張前のようにすーっと一気にスクロールみたいなことは出来なくなっています。サンプルのgifのような用途の場合はよいですが、ある程度慣性が弱まってから止めたい時もあると思うので、出来ればそれもやりたかったところです。