コガネブログ

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

【Unity】FancyScrollView の Scroller をマウスホイールで操作しやすくするコンポーネントの例

ソースコード

using FancyScrollView;
using UnityEngine;
using UnityEngine.EventSystems;

namespace Kogane.Internal
{
    [DisallowMultipleComponent]
    internal sealed class Example :
        MonoBehaviour,
        IPointerEnterHandler,
        IPointerExitHandler
    {
        //================================================================================
        // 変数(SerializeField)
        //================================================================================
        [SerializeField] private Scroller m_scroller;
        [SerializeField] private float    m_scrollSensitivity = 1;

        //================================================================================
        // 変数
        //================================================================================
        private bool m_isPointerEnter;

        //================================================================================
        // 関数
        //================================================================================
        /// <summary>
        /// マウスカーソルが入ってきた時に呼び出されます
        /// </summary>
        void IPointerEnterHandler.OnPointerEnter( PointerEventData eventData )
        {
            m_isPointerEnter = true;
        }

        /// <summary>
        /// マウスカーソルが出た時に呼び出されます
        /// </summary>
        void IPointerExitHandler.OnPointerExit( PointerEventData eventData )
        {
            m_isPointerEnter = false;
        }

        /// <summary>
        /// 毎フレーム呼び出されます
        /// </summary>
        private void Update()
        {
            if ( !m_isPointerEnter ) return;

            var delta = Input.mouseScrollDelta.y;

            if ( delta == 0 ) return;

            m_scroller.Position -= delta * m_scrollSensitivity;
        }
    }
}
  • m_scrollSensitivity の値を増やすとマイスホイールを回した時のスクロール量が増える
  • 縦スクロールにのみ対応