Overview
The Scroll List control allows you to display a scrollable list of List Items. Items can be arranged either vertically, or horizontally.

Unlike other controls, the Scroll List does not have any of its own graphics. It merely serves as a container for, and an interface to, List Items, and provides settings for how you wish to display those items.

Usage
Drag a UIScrollList script onto an empty GameObject. Then, in-script, you will add List Items to the list like so:
public UIScrollList list;        // The Scroll List
public GameObject itemObj;        // The List Item prefab or scene object

...

UIListItem newItem;  // Reference to an IListItem interface

// Instantiates a new item from the item object and
// sets any attached text object to "Level 1":
newItem = (UIListItem) list.CreateItem(itemObj, "Level 1");

// Assign some meaningful data to the new item:
newItem.Data = myLevel1DataObj;

...

// Alternative method that does not create a new list item
// but rather just adds one that already exists in the scene
// to the scroll list:
list.AddItem(itemObj, "Level 1");
var list : UIScrollList;        // The Scroll List
var itemObj : GameObject;        // The List Item prefab or scene object

...

var newItem : UIListItem;  // Reference to an IListItem interface

// Instantiates a new item from the item object and
// sets any attached text object to "Level 1":
newItem = list.CreateItem(itemObj, "Level 1") as UIListItem;

// Assign some meaningful data to the new item:
newItem.Data = myLevel1DataObj;

...

// Alternative method that does not create a new list item
// but rather just adds one that already exists in the scene
// to the scroll list:
list.AddItem(itemObj, "Level 1");
List Items will appear in the list according to the order in which they were added.
Class
Interactivity
The Scroll List control type executes code in response to the user selecting an item by invoking a method on a MonoBehavior (specified by setting the "Script With Method To Invoke" and "Method To Invoke OnSelect" properties), and/or by calling a delegate, set by calling the SetInputDelegate() method through script. More specifically, the "Method To Invoke On Select" is invoked when the user selects an item from the list, and the input delegate is called whenever there is input to the Scroll List itself.

Additionally, when the user selects a List Item, any registered EZValueChangedDelegate delegate will be called.
You can retrieve the currently selected item, if any, through the SelectedItem property. You can set the currently selected item by calling the SetSelectedItem() method by passing it the zero-based index of the item in the list.
Control-specific Properties
Touch Scroll
When enabled, the list will be scrollable in a manner similar to a menu on the iPhone. i.e. When you drag your finger over the list, it slides smoothly, coasting after you remove your finger. This behavior even works with the mouse and other pointer types.
Scroll Wheel Factor
The factor by which any mouse scrollwheel delta is multiplied to arrive at how far the list should be scrolled in response. To make your list scroll faster or slower in response to mousewheel input, increase or decrease this value, respectively.
Scroll Decel Coef
The scroll deceleration coefficient. This value determines how quickly a touch scroll will coast to a stop. When using snapping, this also essentially determines which item will be snapped to when the list is let go. If you want to always scroll one item at a time, for example, set this value high.
Snap
When true, the scroll position will "snap" so that the item nearest the center of the list will snap to the center, provided it wouldn't take us past the edge of the list.
Min Snap Duration
The minimum number of seconds a snap should last.
Snap Easing
The type of easing to use when snapping to an item.
Slider
Reference to an optional Slider control which can serve as a scroll bar for the list.
Orientation
Can be set to VERTICAL or HORIZONTAL. This causes the list's items to be oriented accordingly.
Direction
Determines the direction in which the list grows as items are added.

TtoB_LtoR - Items will be added top-to-bottom (when vertical) or left-to-right (when horizontal).

BtoT_RtoL - Items will be added bottom-to-top (when vertical) or right-to-left (when horizontal).
Alignment
Determines how items will be aligned within the list when added.

LEFT_TOP - Items will be aligned flush with the left (vertical lists) or top (horizontal lists) edge.

CENTER (default) - Items will be centered in the list.

RIGHT_BOTTOM - Items will be aligned flush with the right (vertical lists) or bottom (horizontal lists) edge.
Viewable Area
The width and height, of the viewable area of the list. List Items will be clipped to this area. This is specified in local units when Units In Pixels is false, and in pixels when true.
Units In Pixels
When true, the viewableArea itemSpacing, etc, are interpreted as being specified in screen pixels.
Render Camera
The camera that will render this list. This needs to be set when unitsInPixels is set to true or when you have prefab items that need to know which camera to use to size themselves.
Item Spacing
The amount of space that will separate items in the list. This is specified in local units when Units In Pixels is false, and in pixels when true.
Spacing At Ends
When set to true, the Item Spacing will also be added before the first item in the list, and after the last item in the list, providing some padding to the first and last items. If set to false, the first and last items will be flush with the edges of the list's viewable area.
Extra End Spacing
Adds the specified amount of extra space to the ends of the list (before the first item, and after the last). This value is in local units if Units In Pixels is set to false, or in pixels if false.
Activate When Adding
When true, items added or inserted to this list will be activated recursively. This is STRONGLY recommended when using managed sprites/controls.
Clip Contents
When set to false (unchecked), the contents of the scroll list will not be clipped to the viewable area. This is helpful in situations where individual list item containers contain lots of sub-controls, or lots of text. By disabling the clipping, lots of performance can be saved by not having the overhead of clipping the items.
Clip When Moving
When true, items will be clipped each frame in which it is detected that the list has moved, rotated, or scaled. Use this if you are having clipping errors after scaling, rotating, etc, a list as part of a panel transition, etc. Leave set to false otherwise to improve performance.
Position Items Immediately
When set to true, items added to the list will be positioned in the list immediately so that any immediately following code that does something to the list that depends on the new item positioning such as ScrollToItem(), etc, will take the new list contents into account. Otherwise, if left set to false, items are positioned in the list at the end of the frame in which they were added (inside LateUpdate()). If you are adding lots of items to a list in batches, you can save a lot of performance by setting this setting to false so that the items all get positioned in one batch.
But if you are having problems with ScrollToItem() or other similar features not working when called immediately after adding items to the list, set this setting to true.
Drag Threshold
Distance the pointer must travel beyond which when it is released, the item under the pointer will not be considered to have been selected. This allows touch scrolling without inadvertently selecting the item under the pointer. When set to NaN, the list will use whatever drag threshold is specified in the scene's UIManager. Otherwise, this can be set to a value different from that in UIManager if more or less of a threshold is needed for scrolling purposes.
Scene Items
An optional array of items in the scene that are to be added to the list at startup. These will be added before the items in the Prefab Items array.
Prefab Items
An optional array of item prefabs that are to be added to the list at startup. These will be added after the items in the Scene Items array. Prefab Items also contains corresponding string values to serve as the text for the item. If the string value is left empty, none will be assigned, or any existing text will remain intact.

TIP: For convenience, if you will be using a single prefab for all your items and don't want to have to drag your prefab onto each slot, and instead just want to fill in the text to be used, then you may drag your prefab onto the first slot, and just fill in the text for subsequent slots, and the prefab in the first slot will be used.
Method To Invoke On Select
The method that will be invoked when a list item is selected in the list.

This setting only has effect if the list item in question is of type UIListItem. It is the only inherently "selectable" item type which notifies the list that it has been selected.
Manager
If the items you add to the list are managed (make use of a SpriteManager), you can tell the list which SpriteManager object you want them to use, and they will automatically be added to this manager when created in the list. This is mainly if you are using managed sprites/control in conjunction with UIScrollList.CreateItem().
Position Easing
The easing to use to reposition items in the list when items are inserted to, or removed from, the list. (See the note below.)
Position Ease Duration
The duration of the position easing, in seconds. (See the note below.)
Position Ease Delay
The delay of the position easing, in seconds. (See the note below.)
Block Input While Easing
Indicates whether or not input should be blocked while items are easing into place. It is recommended to leave this at the default value of true.

NOTE

The "Position Easing" and related settings allow the list to smoothly transition the positions of the items therein when items are added to or removed from the list. In order to take advantage of this feature while adding items to the list, use the versions of either the AddItem() or CreateItem() methods which have an extra boolean argument indicating whether easing should be used. Likewise, to use this when removing items, use the versions of RemoveItems() which have the extra "easing" boolean argument. For details on the various versions of each of these methods, please see the scripting reference.