前回の記事で軽量にスクロールするためのコンセプトと簡単なサンプルコードを紹介しました。
【無限】Unityで大量のオブジェクトでも軽量にスクロールできるスクロールビューをつくろう(その1) - 建設とUnity
しかし、軽量化するために、スクロールビューの要素を最低個数のボタンにしたため、 スクロールバーが対象全体ではなく、要素数分のスクロールしか表現できない状態になってしまいました。
その結果、スクロール内の任意の場所にスキップできず、軽量だが不便なスクロールビューになっていました。
今回は、既存のスクロールバーを非表示にして、代わりにスクロールバーを自作することで、 軽量かつスクロール内の任意の場所にスキップできるスクロールビューを紹介します。
動作イメージ
まず、動作イメージは以下の通りです。
今度はちゃんとした無限スクロールができた。
— ぜー (@zhei_) 2022年1月27日
こないだのはスクロールバーで操作できなかった。あと、ケアレスミスで飛ばし飛ばしになるようになってた。
スクロールバーは元々のものは非表示にして、Buttonで自作した。スクロールビューの対象が100個でも1000個でも無限個でも重くならないはず! pic.twitter.com/5XZCyA3B6y
1億でも軽い! pic.twitter.com/hqhL8fvmES
— ぜー (@zhei_) 2022年1月28日
通常のスクロールビューのように、 Content配下に要素をすべて配置した場合は1万個でもかなり負荷が高かった(スクロール時は100msかかる…)ですが、 改良したスクロールビューでは、要素数を1億個などとかなり無茶な値にしても、軽量に動作します。
サンプルコード
サンプルコードは以下のgithubにアップロードしました。 設定方法は近いうちにReadMeに追記しておきます。