https://github.com/son24tuoi/circular-scroll-unity.git


circular-scroll-horizontal-gif.gif

circular-scroll-vertical-gif.gif

Cho phép người dùng cuộn nội dung và quay vòng vô hạn khi đến cuối danh sách.

Hệ thống scroll giúp tối ưu hóa hiệu năng bằng cách tái sử dụng các phần tử UI (GameObject). Thay vì khởi tạo hàng ngàn vật phẩm gây tốn bộ nhớ RAM và làm giảm tốc độ xử lý CPU, hệ thống này chỉ duy trì một số lượng nhỏ các phần tử đủ để hiển thị trên màn hình và cập nhật dữ liệu của chúng khi được cuộn.

Tính năng chính

So sánh với truyền thống

Tiêu chí Scroll truyền thống Scroll tái sử dụng
Số lượng Object Bằng tổng số lượng data → data càng nhiều - object càng nhiều. Cố định, thường gấp 2 lần số lượng có thể thấy trong vùng nhìn (viewport).
Tiêu tốn bộ nhớ RAM Tăng dần theo dữ liệu Thấp và ổn định

Nguyên lý hoạt động

Hướng dẫn cài đặt nhanh

  1. Gắn script CircularScrollVertical.cs/CircularScrollHorizontal.cs vào GameObject có chứa ScrollRect (đặt nơi khác cũng được 😅).
  2. Kéo các biến ScrollRect và ContentRT cho CircularScrollVertical.cs/CircularScrollHorizontal.cs trên cửa sổ Inspector. Khai báo số lượng hiển thị danh sách tối đa vào TotalItems (hoặc set bằng code). Các biến khác hiện trên Inspector sẽ tự động cập nhật.
  3. Cấu hình các UI item trong danh sách làm object con của game object Content (nên để số lượng vừa đủ kín vùng nhìn - Viewport)
  4. Cấu hình CircularScrollVertical.cs/CircularScrollHorizontal.cs bằng hàm Init() với tham số là hàm callback cập nhật dữ liệu. Xem script mẫu ItemLoader.cs và scene mẫu Scene_CircularScroll.
  5. Get danh sách các UI item trong Content bằng hàm TryGetComponentsInContentChildren() . Xem script mẫu ItemLoader.cs và scene mẫu Scene_CircularScroll.