Scrmizu is variable infinite scroll and extended UnityEngine.UI.ScrollRect for Unity UGUI.
- Unity 2020.3.45f1 or later.
- Scripting Runtime Version 4.6 Eq.
- Download Scrmizu.unitypackage here.
- Import the contents of the Scrmizu folder to the Packages or Assets folder.
- Optionally import Scrmizu.Sample.unitypackage.
To create a Infinite Scroll View in the Unity Editor, go to GameObject → UI → Infinite Scroll View.
Prepare ScrollItem prefab to be repeatedly displayed by infinite scroll.
public class SimpleInfiniteScrollItem : MonoBehaviour, IInfiniteScrollItem
{
/// <summary>
/// ScrollItem enters display area and updates display item data.
/// </summary>
/// <param name="data"></param>
public void UpdateItemData(object data)
{
if (!(data is float width)) return;
gameObject.SetActive(true);
if (!(gameObject.transform is RectTransform rectTransform)) return;
rectTransform.sizeDelta = new Vector2(width, rectTransform.sizeDelta.y);
}
/// <summary>
/// Hide ScrollItem because it has left the display area.
/// </summary>
public void Hide()
{
gameObject.SetActive(false);
}
}
Call InfiniteScrollRect.SetItemData to set the item data.
[RequireComponent(typeof(InfiniteScrollRect))]
public class SimpleInfiniteScrollController : MonoBehaviour
{
private InfiniteScrollRect _infiniteScrollRect;
private InfiniteScrollRect InfiniteScrollRect => _infiniteScrollRect != null
? _infiniteScrollRect : _infiniteScrollRect = GetComponent<InfiniteScrollRect>();
private void Awake()
{
InfiniteScrollRect.SetItemData(new object[]
{
200f,
300f,
400f,
500f,
600f,
700f,
800f,
900f,
1000f
});
}
}
By scrolling, you can confirm that the width of the scroll item is updated for each set data (width).
To create a Nested Scroll View in the Unity Editor, go to GameObject → UI → Nested Scroll View. Put it under the Scroll View container.
When scrolling in the non-scroll direction of NestedScrollView, scroll event is sent to the parent ScrollView.
To create a Paged Scroll View in the Unity Editor, go to GameObject → UI → Paged Scroll View. Create multiple page content items under content.
One item is displayed in the scroll direction in the view area. Pauses the page each time scroll.