Как обнаружить прокрутку вверх или вниз на панели для 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);
}