どうも蒼水です。
今回は前回のDropDownのUIに含まれていたScrollbarについてフォーカスしていきます。
前回の記事はこちらからどうぞ。
atelier-aomi.hatenablog.com
今回の目的
今回はScrollbarのUIの構成を確認し、パーツとしてどう利用されているのかを理解することを目的とします。
Scrollbarは基本単体ではなくパーツとして使うのですが、どう紐付けがされていてどういった挙動をするのか、を実際に触りつつ見ていきます。
Scrollbarの公式リファレンスはこちら
docs.unity3d.com
Scrollbarの構成を理解する

Scrollbarが必要になるシチュエーションとしては上画像のように複数のコンテンツを含むUIにおいてはみ出している部分をスクロールさせるようにするような場合です。
基本的には他のUIを作成するときに一緒についてくるものではあるので自分で構成する必要はありませんが挙動においてははみ出た部分に応じてScrollbarも挙動をすることになります。
Scroll Rectについて

Scrollbarがスクロールする範囲を定義するためには親オブジェクトにScroll Rectというコンポーネントが必要になります。
Scroll RectコンポーネントにはContentを参照する部分があり、これが要するに構成要素をまとめた親オブジェクトを参照します。

また、構成要素の描画範囲を定義したViewportを参照することでスクロールの必要性やスクロール範囲を定義することができます。ViewportオブジェクトにMaskコンポーネントを付けることで描画範囲外にはみ出る部分をマスクすることができます。
Scrollbarの参照を入れることでそのScrollbarでContentのスクロールを実現します。
今回の例では縦スクロールですがHorizontalの方で設定することで横スクロールに対応することも可能です。
Scroll Rectの公式リファレンスはこちら
docs.unity3d.com
Scrollbarコンポーネントを理解する
Scrollarの構成は理解できたので次に本体であるScrollbarコンポーネントを見ていきます。
Color関連

Color関連にはいろいろとありますが、要するにマウスの挙動に合わせてボタンのルックを定義するものです。
基本的にこれまでの他のUIのColor関連と同じです。
| Normal Color | 通常時の色 |
| Highlighted Color | マウスカーソルと重なっているときの色 |
| Pressed Color | クリックされている状態(押しっぱなしにされているとき)の色 |
| Selected Color | クリックして選択された状態の色 |
| Disable Color | 無効化されている状態の色 |
Scrollbarの挙動関連

Scrollbarの挙動周りは主にここの設定となります。
感覚的には以前解説したスライダーに近いものになりますが、スクロール特有の挙動があるので説明します。

ValueはSliderと同じですが、Scrollbarのハンドル部分の幅をSizeで定義することができます。
またNumber Of Stepsというものがあり、これはいわゆる「スクロールの滑らかさ」とみても良いと思います。
Stepsというのがいわゆる分割数みたいなもので、2以上の場合値に応じてカクカクとして挙動をするようになります。
なお、1の時は完全に上か下に張り付くようになります。
0の時は制限がなくなり最も滑らかな挙動を取るようになります。
この値の設定値ははみ出た部分+1の値を設定するとちょうど選択肢がきれいに見える状態になるのでオススメです。今回の場合はGとHの2つがはみ出ているので2+1で3を設定するのが良い、ということです。
On Value Changed (Single)

これはスクロールバーを動かしたときのハンドルの位置をfloatで返してくれるイベントになります。
前項のNumber Of Stepsの設定とも関係あるので試しに分割数を変えて動かしてみたものが上動画になります。
1/Steps-1の値がコンソールに出ていることが確認できますね。
今回は以下の関数で使用しました。
public void OnValueChanged(float value) { Debug.Log(value); }
Scrollbarのルックを変更する

これまでの他UI同様Scrollbarの各所にあるImageを差し替えることで自由にルックを変更できるようになっていますので自分のトンマナに合わせて変更しましょう。
おわりに
これでScrollbarの基本的な部分は理解できました。
Scrollbarは他の一部UI作成時に自動で作成される要素になるのであまりじっくり見ることがなく知識の穴になりそうな気はしますね...。
単体で機能しないUIなのでここで理解しておくことは大事かなーと思いました。
次回はUIの要素としては最後であり、ここまでの要素がいろいろ混ざった複雑なUIであるScroll ViewというUIについて触れていければと思います。












































































