mopsicus / uis

Unity infinite scroller (UIS) is an extension allows you to use the ScrollRect control as an infinite scroller/spinner
MIT License
459 stars 68 forks source link

Demo5 horizontal scroll view will mix up after pulling #37

Open wangyongcong opened 1 month ago

wangyongcong commented 1 month ago

Demo5

  1. enter play mode
  2. pull left (or right) then release
  3. new items are loaded and the view will be a mix up.

I found that it's caused by the following commit. If I comment out the call to ScrollTo(index), it will be fine.

26627ae - fix: update the scroll position by a scrollbar

// by https://github.com/webitube
// Note: If the scroller position changed but the scroll velocity is exactly zero, the movement was done via a scrollbar. In this case, we need to ScrollTo() the indicated position directly.
// Note 2: The normalized scrollbar position is opposite from the ScrollTo() index. This is why the we take (1.0 - pos) instead of pos directly.            
if (_scroll.velocity.magnitude == 0.0f) {
    var pos = (Type == 0) ? vector.y : vector.x;
    var index = Mathf.RoundToInt(_count * (1.0f - pos));
    ScrollTo(index);
}     

https://github.com/user-attachments/assets/cb6b700b-594e-4e31-a8ea-3742d3aee7ba

mopsicus commented 1 month ago

Thanks, will check it