Как обнаружить прокрутку вверх или вниз на панели для Unity3d?

Я хотел бы обнаружить прокрутку вверх или вниз. Должно быть как Windows Form ниже.

private void dgv_Scroll(object sender, ScrollEventArgs e)
    {
        if (e.OldValue > e.NewValue)
        {
            // here up
        }
        else
        {
            // here down
        }
    }

Как обнаружить прокрутку вверх или вниз на панели для Unity3d?

public void OnScrollValueChanged(float value)
{
        if (?)
        {
            // here up
        }
        else
        {
            // here down
        }
}

1 ответ

Решение

Есть onValueChanged за Scrollbar а также ScrollRect, Не знаю, какой из них вы используете, но вот пример кода для регистрации на onValueChanged событие. Вы можете найти другие примеры событий пользовательского интерфейса здесь. Изменит его, чтобы включить образцы из этого ответа.

Вы, вероятно, нуждаетесь в Scrollbar, Получите исходное значение при запуске, затем сравните его с текущим значением при прокрутке. Вы можете использовать это, чтобы определить вверх и вниз. Это предполагает, что direction установлен в TopToBottom,

scrollBar.direction = Scrollbar.Direction.TopToBottom;

Полоса прокрутки:

public Scrollbar scrollBar;
float lastValue = 0;

void OnEnable()
{
    //Subscribe to the Scrollbar event
    scrollBar.onValueChanged.AddListener(scrollbarCallBack);
    lastValue = scrollBar.value;
}

//Will be called when Scrollbar changes
void scrollbarCallBack(float value)
{
    if (lastValue > value)
    {
        UnityEngine.Debug.Log("Scrolling UP: " + value);
    }
    else
    {
        UnityEngine.Debug.Log("Scrolling DOWN: " + value);
    }
    lastValue = value;
}

void OnDisable()
{
    //Un-Subscribe To Scrollbar Event
    scrollBar.onValueChanged.RemoveListener(scrollbarCallBack);
}

ScrollRect:

public ScrollRect scrollRect;

void OnEnable()
{
    //Subscribe to the ScrollRect event
    scrollRect.onValueChanged.AddListener(scrollRectCallBack);
}

//Will be called when ScrollRect changes
void scrollRectCallBack(Vector2 value)
{
    Debug.Log("ScrollRect Changed: " + value);
}

void OnDisable()
{
    //Un-Subscribe To ScrollRect Event
    scrollRect.onValueChanged.RemoveListener(scrollRectCallBack);
}
Другие вопросы по тегам