9 [RequireComponent(typeof(ScrollRect))]
10 [AddComponentMenu(
"Layout/Extensions/Vertical Scroller")]
13 [Tooltip(
"desired ScrollRect")]
15 [Tooltip(
"Center display area (position of zoomed content)")]
17 [Tooltip(
"Size / spacing of elements")]
19 [Tooltip(
"Scale = 1/ (1+distance from center * shrinkage)")]
21 [Tooltip(
"Minimum element scale (furthest from center)")]
22 public Vector2
minScale =
new Vector2(0.7f, 0.7f);
23 [Tooltip(
"Select the item to be in center on start.")]
25 [Tooltip(
"Stop scrolling past last element from inertia.")]
27 [Tooltip(
"Set Items out of center to not interactible.")]
29 [Tooltip(
"Button to go to the next page. (optional)")]
31 [Tooltip(
"Button to go to the previous page. (optional)")]
33 [Tooltip(
"Event fired when a specific item is clicked, exposes index number of item. (optional)")]
35 [Tooltip(
"Event fired when the focused item is Changed. (optional)")]
42 public string result {
get;
private set; }
44 private float[] distReposition;
45 private float[] distance;
83 Debug.LogError(
"Please define the RectTransform for the Center viewport of the scrollable area");
107 if (arrayOfElements !=
null)
130 r.anchorMax = r.anchorMin = r.pivot =
new Vector2(0.5f, 0.5f);
131 r.localPosition =
new Vector2(0, i *
elementSize.rect.size.y);
177 distReposition[i] =
center.GetComponent<RectTransform>().position.y -
_arrayOfElements[i].GetComponent<RectTransform>().position.y;
178 distance[i] = Mathf.Abs(distReposition[i]);
182 _arrayOfElements[i].GetComponent<RectTransform>().transform.localScale =
new Vector3(scale.x, scale.y, 1f);
186 float minDistance = Mathf.Min(distance);
191 if (minDistance == distance[i])
203 if (!Input.GetMouseButton(0))
219 private void ScrollingElements()
222 Vector2 newPosition =
new Vector2(
scrollingPanel.anchoredPosition.x, newY);
228 float deltaElementPositionY =
elementSize.rect.height * element;
229 Vector2 newPosition =
new Vector2(
scrollingPanel.anchoredPosition.x, -deltaElementPositionY);
248 [System.Serializable]
UnityEngine.UI.Button Button
Credit Erdener Gonenc - @PixelEnvision.