コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】FancyScrollView で OnSelectionChanged に登録した関数を常に呼び出す方法

概要

protected override void Initialize()
{
    base.Initialize();

    m_scroller.OnValueChanged( UpdatePosition );
    m_scroller.OnSelectionChanged( UpdateSelection );
}

protected override void UpdatePosition( float position )
{
    base.UpdatePosition( position );

    var i     = Mathf.RoundToInt( position );
    var size  = m_items.Count;
    var index = size < 1 ? 0 : i < 0 ? size - 1 + ( i + 1 ) % size : i % size;

    UpdateSelection( index );
}
  • 基本的には OnSelectionChanged に登録した関数は
    スクロール内のオブジェクトがスナップした時に呼び出される
  • スクロールをドラッグしている時などにも OnSelectionChanged を呼び出したい場合は
    上記のように OnValueChanged に登録した関数の中で
    インデックスを算出する処理を記述すれば良い