Hoe oneindig scrollen in Unity UI te implementeren

Oneindig scrollen in de gebruikersinterface verwijst naar een techniek waarbij inhoud (zoals lijsten, rasters of schuifweergaven) dynamisch extra items laadt en weergeeft terwijl de gebruiker scrolt, waardoor de illusie ontstaat van onbeperkte inhoud. Deze functie wordt vaak gebruikt in applicaties en games om grote datasets of verzamelingen te presenteren zonder de gebruiker te overweldigen met alle items tegelijk.

In deze tutorial leren we hoe we een efficiënt oneindig scrollsysteem kunnen implementeren binnen het UI-framework van Unity. We behandelen het instellen van een scrollweergave, het dynamisch laden van inhoud, het afhandelen van scrollgebeurtenissen en het optimaliseren van de prestaties.

Stap 1: Het project opzetten

Begin met het maken van een nieuw 2D- of 3D-project in Unity. Noem uw project "InfiniteScrollingUI". Zorg ervoor dat de benodigde UI-componenten zijn geïnstalleerd door Window -> Package Manager te selecteren en de pakketten UIElements en TextMeshPro te installeren als deze nog niet zijn geïnstalleerd.

Stap 2: De scrollweergave maken

In de Unity-editor:

  1. Klik met de rechtermuisknop in het venster Hiërarchie en selecteer UI -> ScrollView.
  2. Vouw de ScrollView in de hiërarchie uit om de spelobjecten Viewport en Content te lokaliseren.
  3. Verwijder de standaardcomponent Text uit het spelobject Content.

Stap 3: Het itemsjabloon instellen

Maak een UI-sjabloon voor de items die in de scrollweergave worden weergegeven:

  1. Klik met de rechtermuisknop op het spelobject Content en selecteer UI -> Tekst. Dit wordt uw itemsjabloon.
  2. Pas het uiterlijk van het tekstelement aan uw ontwerp aan (bijvoorbeeld lettergrootte, kleur).
  3. Schakel de itemsjabloon uit door de component Text uit te schakelen om te voorkomen dat deze zichtbaar is in het spel.

Stap 4: Het oneindige scrollgedrag scripten

Maak een script om het dynamisch laden en weergeven van items in de scrollweergave af te handelen. Klik met de rechtermuisknop in de map Assets, selecteer Create -> C# Script en noem deze "InfiniteScrollingUI". Dubbelklik op het script om het in uw code-editor te openen.

// InfiniteScrollingUI.cs
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;

public class InfiniteScrollingUI : MonoBehaviour
{
    public RectTransform itemTemplate;
    public RectTransform content;

    private List items = new List();

    void Start()
    {
        InitializeItems();
    }

    void InitializeItems()
    {
        for (int i = 0; i < 20; i++)
        {
            RectTransform newItem = Instantiate(itemTemplate, content);
            newItem.gameObject.SetActive(true);
            newItem.GetComponent().text = "Item " + i;
            items.Add(newItem);
        }
    }

    public void OnScroll(Vector2 scrollDelta)
    {
        if (scrollDelta.y < 0 && content.anchoredPosition.y < -itemTemplate.rect.height * (items.Count - 10))
        {
            RectTransform firstItem = items[0];
            items.RemoveAt(0);
            firstItem.anchoredPosition = items[items.Count - 1].anchoredPosition + Vector2.up * itemTemplate.rect.height;
            items.Add(firstItem);
        }
        else if (scrollDelta.y > 0 && content.anchoredPosition.y > 0)
        {
            RectTransform lastItem = items[items.Count - 1];
            items.RemoveAt(items.Count - 1);
            lastItem.anchoredPosition = items[0].anchoredPosition - Vector2.up * itemTemplate.rect.height;
            items.Insert(0, lastItem);
        }
    }
}

Koppel het InfiniteScrollingUI-script aan het spelobject ScrollView. Wijs in het infovenster de Item Template en Content RectTransforms toe aan hun respectievelijke velden.

Stap 5: Scrollgebeurtenissen afhandelen

Voeg een gebeurtenistrigger toe aan ScrollView om scrollgebeurtenissen te detecteren en roep de OnScroll-methode van het InfiniteScrollingUI-script aan.

  1. Selecteer het spelobject ScrollView in de hiërarchie.
  2. Klik in het infovenster op Component toevoegen en selecteer Event Trigger.
  3. Klik op Nieuw gebeurtenistype toevoegen en kies Scrollen.
  4. Sleep het spelobject ScrollView van de hiërarchie naar het veld Object van de nieuwe scrollgebeurtenis.
  5. In de vervolgkeuzelijst Gebeurtenis selecteert u InfiniteScrollingUI -> OnScroll.

Stap 6: Het oneindige scrollsysteem testen

Druk op de afspeelknop in Unity om uw oneindige scrollsysteem te testen. Scroll omhoog en omlaag in ScrollView om te zien hoe de items dynamisch worden geladen en gerecycled.

Conclusie

Het implementeren van een oneindig scrollsysteem in de Unity UI is een waardevolle techniek voor het verwerken van grote datasets en het verbeteren van de responsiviteit van de gebruikersinterface. Door gebruik te maken van het dynamisch laden en recyclen van inhoud, kunt u een naadloze browse-ervaring voor gebruikers creëren, of ze nu door lijsten, rasters of andere UI-componenten navigeren.

Experimenteer met verschillende UI-indelingen, scrollsnelheden en optimalisaties om het oneindige scrollsysteem aan te passen aan uw specifieke projectvereisten. Deze aanpak vergroot niet alleen de gebruikersbetrokkenheid, maar zorgt er ook voor dat uw applicatie efficiënt presteert op verschillende apparaten en platforms.