You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

606 lines
20 KiB

EnhancedScroller
http://u3d.as/fXk
Version 2.33.0
6 April 2022
Requires Unity 2019.4.4f1+
Features:
- Added Application.targetFrameRate = 60; to all demo scenes to improve smooth scrolling on some devices
Version 2.32.1
26 January 2022
Requires Unity 2019.4.4f1+
Fixes:
- Moved the container offset calculation after the position / rotation / scale to fix some issues with offsets
- Added FlickSnap button to the MainMenu scene
Version 2.32.0
22 December 2021
Requires Unity 2019.4.4f1+
Feature:
- Added Demo #17 FlickSnap to show how you can create your own snapping component
Version 2.31.1
27 October 2021
Requires Unity 2019.4.4f1+
Fixes:
- Updated ScrollBarVisibility to work correctly when setting to "Only if Needed" or "Never"
Version 2.31.0
9 October 2021
Requires Unity 2019.4.4f1+
Features:
- Updated Chat Demo #16 to calculate the text space used inside the scroller, instead of relying ont the Unity Content Size Fitter. This has less accuracy, but is far more efficient for text cells.
Version 2.30.2
23 September 2021
Requires Unity 2019.4.4f1+
Fixes:
- Updated CellView.cs in Demo #5 to handle UnityWebRequest results for Unity version 2020+ without getting a deprecated code warning.
Version 2.30.1
7 September 2021
Requires Unity 2019.4.4f1+
Fixes:
- Added optional forceCalculateRange parameter (with default to false) to JumpToDataIndex to force a calculation of the active cell range immediately after the jump (instead of one frame after).
Version 2.30.0
19 August 2021
Requires Unity 2019.4.4f1+
Features:
- Changed the parenting of recycled cell views to deactivate the game objects for efficiency
Fixes:
- Fixed Demo 16 return to main menu button
Version 2.29.2
10 August 2021
Requires Unity 2019.4.4f1+
Fixes:
- Fixed snapping when using more than one finger on touchscreen devices
Version 2.29.1
18 March 2021
Requires Unity 2019.4.4f1+
Fixes:
- Modified the clamping when setting the scroll position internally so that it does not exceed the ScrollSize
Version 2.29.0
18 March 2021
Requires Unity 2019.4.4f1+
Fixes:
- Fixed Tween.cs to calculate the last position after assigning the new position so that the first instance of last position is correct
- Re-worked Demo #15 to accommodate looping
- Fixed Demo #13 Controller.cs LoadData method to jump back to the previous ScrollPosition after reload. This gives a smoother transition than the jump did
Features:
- Added SetScrollPositionImmediately to EnhancedScroller.cs to refresh the active cells immediately after setting the scroll position (normally this would occur when ScrollRect triggers the change in position on the next frame). This is useful if you need to manually change a cell's height after setting the position.
- Added IgnoreLoopJump to EnhancedScroller.cs to allow you to shut off the loop jumping that gives the illusion of a continous stream of cells. This is usefull if you are manually changing the cell's size around the jump trigger boundaries.
- Modified Data.cs in Demo #15 to have some properties that calculate the cell's size based on its expansion state
- Added preloadData flag to Demo #5 to show how to buffer cells before they are visible to cut down on the download visibility of remote resources
Version 2.28.2
13 March 2021
Requires Unity 2019.4.4f1+
Fixes:
- Updated Demo #16 Chat.cs to continually update the size of the spacer so that there is no dead space at the top of the scroller.
Version 2.28.1
11 March 2021
Requires Unity 2019.4.4f1+
Fixes:
- Updated Demo #16 Chat.cs to zero out the spacer after the initial cells scroll off screen. This allows you to scroll back to the top without going off screen.
- Fixed MyTextCellView prefab in Demo #16 to center the text better.
Version 2.28.0
5 March 2021
Requires Unity 2019.4.4f1+
Features:
- Added demo #16 for chat simulation
Version 2.27.1
5 February 2021
Requires Unity 2019.4.4f1+
Fixes:
- Modified SmallList "this" property to return default if the element is null.
Version 2.27.0
20 January 2021
Requires Unity 2019.4.4f1+
Fixes:
- Changed clamping of scroll position to after the cell instead of before to accommodate scrollers with a single cell.
Version 2.26.0
6 October 2020
Requires Unity 2019.4.4f1+
Features:
- Removed uneeded camera components in all scenes to avoid warnings
- Released for Unity 2019.4.4f1
- Reformatted Main Menu to fit cells correctly
Fixes:
- Commented out _RefreshActive(); call at the end of TweenPosition to avoid active cell range miscalculation when jumping to the end of the scroller
Version 2.25.1
29 June 2020
Requires Unity 2017+
Features:
- Added access to the Container (RectTransform) that contains the ScrollRect's content
Fixes:
- Removed loop reset code in ScrollPosition property to avoid incorrect jumps while tweening.
- Fixed Demo #11 Controller to use the scroller's content anchored position instead of scroll position (which is always zero) for threshold calculations.
Version 2.25.0
03 June 2020
Requires Unity 2017+
Features:
- Added tweening cell view heights to Demo 15
- Added accessors to FirstPadder and LastPadder objects of the scroller in EnhancedScroller.cs
- Added lookAheadBefore and lookAheadAfter values to EnhancedScroller.cs to allow pulling in more cell views than are visible, either before the visible cells or after them, respectively. Good for loading cell view resources before they become visible or for tweening.
- Modified _CalculateCurrentActiveCellRange to use the lookAheadBefore and lookAheadAfter values to calculate active cell range
Version 2.24.0
18 May 2020
Requires Unity 2017+
Features:
- Added Demo 15 to show one way to expand and collapse cells
Version 2.23.0
14 May 2020
Requires Unity 2017+
Features:
- Added Demo 14 for selection and navigation using arrow keys
- Added Demo 14b for selection and navigation using arrow keys inside a simulated grid
Version 2.22.0
16 October 2019
Requires Unity 2017+
Features:
- Added snapWhileDragging toggle (default off) to remove jitter when dragging and jumping
- Added loopWhileDragging toggle (default on) to mitigate extreme velocities when dragging past the end of the list while Looping
- Added maxVelocity value to mitigate extreme velocities caused by aggressive user scrolling or loop calculations
Bug Fixes:
- Normalized line endings in Demo #5 controller
Version 2.21.4
26 September 2019
Requires Unity 2017+
Bug Fixes:
- Modified JumpToDataIndex to work properly when jumping up or down while using scroller offset and looping.
Version 2.21.3
25 September 2019
Requires Unity 2017+
Bug Fixes:
- Moved code to ensure jump locations from outside of TweenPosition to ScrollPosition property
- Fixed ScrollPosition to reset to correct jump group if looping
- Fixed JumpToDataIndex to not clamp scroller bounds if looping
Version 2.21.2
18 September 2019
Requires Unity 2017+
Bug Fixes:
- Fixed bug in EnhancedScroller::_GetCellIndexAtPosition when padding is set to zero
Version 2.21.1
17 April 2019
Requires Unity 2017+
Bug Fixes:
- Demo #12b: fixed HScrollbar to sync with the main scroller
Version 2.21.0
17 April 2019
Requires Unity 2017+
Features:
- Added Demo 12b Nested Linked Scrollers (Alternative Grid)
- Demo #5:
- Modified CellView.cs: Added UnityWebRequest as a replacement for WWW in Unity versions 2017.4+
- Modified Controller.cs: Call the CellWillRecycle method on the cell view that is about to be recycled
Bug Fixes:
- Demo #4: Fixed scroll inertia decelaration
- Demo #11: Fixed _dragging to initialize to false so that the hint text is not visible at the start of some Unity versions.
- Demo #13: Fixed Controller.cs to respond to scroll positions greater than 1f and also to prevent loading data if it is already doing so.
- EnhancedScroller.cs: Added pixel offset to fix floating point comparison in _GetCellIndexAtPosition. This will properly calculate the Start and End data indices.
- EnhancedScroller.cs: Fixed JumpToDataIndex to use the _loopFirstCellIndex to properly calculate the loop jump position with small data sets where the total size of the cells is smaller than the scroll rect.
- EnhancedScroller.cs: Fixed _Resize to properly calculate the _loopFirstCellIndex to jump to the correct position with small data sets where the total size of the cells is smaller than the scroll rect.
- EnhancedScroller.cs: Modified TweenPosition to always set the end position when the coroutine is completed to make sure there is no slight offset due to device time lag.
Version 2.20.2
12 March 2019
Requires Unity 2017.4.8f1+
Optimized demo #8 to only calculate the layout on the first pass
Version 2.20.1
11 March 2019
Requires Unity 2017.4.8f1+
Fixed refreshing the active cell list after ReloadData and immediate jumping to index.
Modified Pagination to jump to the previous last index instead of calculating the normalized scroll position.
Version 2.20.0
1 March 2019
Requires Unity 2017.4.8f1+
Added Pagination Demo 13
Version 2.19.0
25 January 2019
Requires Unity 2017.4.8f1+
Added Grid Selection Demo 10b
Version 2.18.2
14 January 2019
Requires Unity 2017.4.8f1+
Updated links in documentation
Version 2.18.1
26 September 2018
Requires Unity 2017.4.8f1+
Fixed remote resources demo to work on WebGL
Version 2.18.0
Requires Unity 2017.4.8f1+
Changed remote resources demo to pull in a list of urls from a remote text file instead of reading from a hard-coded list
Version 2.17.0
Requires Unity 2017.4.8f1+
Added method GetCellViewAtDataIndex to retrieve a cell view at a particular data index. If no cell view is visible with this index, then null is returned.
Created CellViewInstantiated delegate that is fired when a cell view is created from scratch (not reused)
Created CellViewReused delegate that is fired when a cell view is reused from the recycled list
Version 2.16.0
September 10, 2018
Requires Unity 2017.4.8f1+
Fixed snapping when at the start or end of the scroller
Added ability to change spacing at runtime and see the results immediately
Version 2.15.6
April 11, 2018
Requires Unity 2017.3.0f3+
Fixed boundary conditions on ScrollSize so that they are not negative
Fixed boundary conditions on NormalizedScrollPosition so that it is not negative
Fixed condition that exited JumpToDataIndex so that it will not ignore bottom padding of scroller
Version 2.15.5
April 05, 2018
Requires Unity 2017.3.0f3+
Modified Demo 12 Nested Scrollers to maintain the detail scroller position.
Version 2.15.4
March 21, 2018
Requires Unity 2017.3.0+
Fixed bug in Unity 2017 where jumping to the end of the scroller would hide some cell views.
Please see this FAQ if you are not able to see the latest version: http://www.echo17.com/forum/index.php?topic=1816.msg4035#msg4035
Version 2.15.3
March 15, 2018
Fixed bug in Pull Down Refresh demo #11: refresh would not work for a list smaller than the container area.
Version 2.15.2
February 12, 2018
Fixed bug when looping with spacing set. List will no longer jump without calculating the spacing when looping around.
Version 2.15.1
December 08, 2017
Added LoopJumpDirection to the JumpToDataIndex method to allow specifying the jump direction
Resubmitted last update to be compatible with Unity 5.5.1+
Version 2.15.0
December 03, 2017
Added Demo #12: Nested Scrollers
Version 2.14.2
July 28, 2017
Added in checks in ReloadData to ensure there are ScrollRect and Container objects present.
Version 2.14
May 17, 2017
Added Demo 11 to show one way pull down to refresh may be implemented
Version 2.13
April 02, 2017
Added Demo #10 to show how to simulate a grid of elements using sub view in each cell view.
Version 2.12.1
March 15, 2017
Added more keywords to search
Version 2.12.0
March 13, 2017
Added a reference to the snapped cellview in the ScrollerSnappedDelegate
Fixed main menu stretch bug
Version 2.11.0
January 31, 2017
Fixed JumpToDataIndex bug that would hide cells when all of the active cells were visible within the scroller. The JumpToDataIndex method will now call the jumpComplete action and exit when there is no need to jump.
Removed the obsolete JumpToDataIndex method
Version 2.10.0
December 19, 2016
Added NormalizedScrollPosition to return the scroll position between 0 and 1
Made the ScrollSize property public
Version 2.9.3
December 16, 2016
Fixed a bug that caused the scroller to go into an infinite loop if the velocity is zero, the cell offset is zero, and the auto-snapping is set to true.
Version 2.9.2
July 29, 2016
Fixed description in Demo 8 View Driven Cell Sizes to accurately describe the new process of calculating the cell size based on the view contents
Version 2.9.1
July 29, 2016
Fixed cell view driven size calculations so that the scroller can update in a single frame (instead of over 3 frames). This also eliminated a bug that occurred when using a large number of cells.
Version 2.9.0
May 19, 2016
Added cellViewWillRecycle callback which is called just before the cell view is recycled. This will allow you to clean up or get the properties of the cell just before it disappears.
Version 2.8.0
April 25, 2016
Modified ReloadData in EnhancedScroller.cs to allow default positioning of the scroller after a reload
Added default localPosition and localRotation values to the container and cell views to fix issues with World Camera canvas settings
Version 2.7.2
April 22, 2016
Fixed a bug that didn't move the scroller back to the top of the list when reloading data
Version 2.7.1
March 23, 2016
Added button to demo scene #8 to add new record
Version 2.7.0
March 22, 2016
Added ClearActive method to EnhancedScroller to allow deleting active cells
Added ClearAll method to EnhancedScroller to allow deleting active and recycled cells
Added AddNewRow method to the View driven demo #8 to show how to add a new record while allowing Unity to drive the cell view sizes.
Fixed inconsistent line endings warning in MainMenu
Updated LoadLevel to SceneManager.LoadScene in MainMenu and ReturnToMainMenu
Version 2.6.2
February 02, 2016
Fixed division by zero bug in snapping when cell count is zero
Version 2.6.1
November 06, 2015
Added Snap function to the EnhancedScroller class. This will allow you to snap your scroller using the snap settings even if the scroller is not moving.
Fixed the tweening to stop at the end position after the time has expired. This will get the scroller to the exact location specified, no matter how quickly the tween occurred.
Improved the View Driven Cell Size example to refresh in two frames instead of three.
Version 2.6.0
November 05, 2015
Added demo #8 to show how to dynamically calculate cell sizes based on content in the cell views
Added demo #9 to show how to respond to events in the cell views
Version 2.5.0
October 29, 2015
Added a virtual method RefreshCellView to the EnhancedScrollerCellView class. This method is called by the RefreshActiveCellViews method of the scroller.
Added RefreshActiveCellViews method to the EnhancedScroller class. This will call RefreshCellView on each active cell visible in the scroller.
Added Demo 7 : Refreshing for an example of how to use the above additions
Version 2.4.0
October 28, 2015
Added delegates for scroll state (scrollerScrollingChanged) and tween state (scrollerTweeningChanged) changes
Added properties that tell if the scroller is scrolling (IsScrolling) or tweening (IsTweening)
Updated the documentation
Version 2.3.4
October 26, 2015
Changed the tweening to use unscaledDeltaTime instead of deltaTime so that the tweening can continue even when the game's timescale is set to zero (paused)
Added ClearRecycled function to the EnhancedScroller script to allow you to delete all the recycled objects. This is useful if you will be loading an entirely different set of cell views and don't want the old cell views to stick around. Note that this new function does call garbage collection.
Version 2.3.3
October 12, 2015
Fixed the DivideByZeroException when loading in zero data rows
Version 2.3.2
October 12, 2015
Fixed "popping" effect when scrolling with the scrollbar. Refresh will now happen immediately instead of in the LateUpdate
Version 2.3.1
August 23, 2015
Updated user manual to reflect tweening changes
Version 2.3.0
August 23, 2015
Added tweening to the jump and snapping functions. You can now set easing for these methods, or just set them to immediate to make the process happen without any easing.
Version 2.2.1
August 21, 2015
Fixed the missing "Credits" label in the Demo 6
Version 2.2.0
August 21, 2015
Added new JumpToDataIndex function to allow specifying a cell offset for centering the cell on the jump location
Added snapping which will lock the scroller to a specified location when the velocity drops below a threshold. You can also specify the same settings that the JumpToDataIndex function accepts.
Exposed more properties and methods of the EnhancedScroller class.
Added a snapping demo that shows how snapping can be used in a slot machine game
Created a user manual for explanation of the different features of the plugin
Version 2.1.0
August 14, 2015
Fixed jumping to an index when padding and spacing is used
Added two new demos: Jumping to an index and remote resource loading
Version 2.0.1
August 13, 2015
Fixed spelling of method JumpToDataIndex in the EnhancedScroller.cs script.
Version 2.0
July 30, 2015
Big changes in this release. Note: if you have already deeply integrated the 1.x scroller in your project, it might be better to hold off on upgrading until you start a new project. The new scroller is a lot less connected to the data and cell views, so there will be significant changes to your code if you are upgrading.
The scroller no longer requires the data to be passed to it. It is completely unaware of the underlying data, instead relying on a delegate script to give it the information it needs. You no longer have to have your list as a set of objects. This allows a more flexible model and better separation of concerns for a true MVC solution. The delegate provides the cell sizes, the number of cells, and the cell view to display for a given data index.
Setup of the scroller in the scene is much simpler now. You don't need to worry about anchors and pivots as much. You also don't need to set up much on the Scroll Rect component as that is handled automatically for you at scene start.
The scroller can handle more than one type of cell prefab. The scroller will recycle the correct type as long as your cell identifiers are unique.
Cell spacing and scroller padding have been added.
More robust SmallList class that can be used in your project on things other than just the scroller. The SmallList is memory friendly, not releasing memory to the garbage collector.
Three new demos to get your creative ideas flowing.
Internal improvements to memory usage and speed, as well as some bug fixes from 1.x.
Version 1.2
June 03, 2015
Added Demo 7 to show how images and selection can be incorporated
Version 1.1
May 29, 2015
Fixed canvas scaler bug. List items will now fit screens where the canvas scaler uses "scale with screen size"