【Unity】 HTFramework框架(六十五)ScrollList滾動數據列表

更新日期:2025年5月16日。
Github 倉庫:https://github.com/SaiTingHu/HTFramework
Gitee 倉庫:https://gitee.com/SaiTingHu/HTFramework

索引

  • 一、ScrollList滾動數據列表
  • 二、使用ScrollList
    • 1.快捷創建ScrollList
    • 2.ScrollList的屬性
    • 3.自定義數據類
    • 4.自定義元素類
    • 5.修改元素模板
    • 6.新增數據
    • 7.刪除數據
    • 8.更新數據
    • 9.清空數據

一、ScrollList滾動數據列表

首先,ScrollRect滾動區域視圖還算是一個比較常用的組件,但他有如下缺點:

未直接面向數據層:ScrollRect通常用于顯示多條數據,且在超出區域后提供視圖滾動效果,但其未提供面向數據層的相關接口(如新增、修改、刪除、顯示等),就像一個白板一樣,或者說Unity本身就保留了這一部分作為開發者的擴展空間。

如要實現一個展示多條數據的滾動列表,需要自行搭建UI組件、編寫數據管理接口、維護數據增刪邏輯、并同步與UI組件保持界面更新,這個過程雖然不難,但每次都這樣來一遍還是相當浪費時間的,所以非常有必要將典型的滾動數據列表功能提煉出來,只需簡單的配置,就能應對大多數常見的滾動數據列表功能,這就是ScrollList

二、使用ScrollList

1.快捷創建ScrollList

首先,在Hierarchy窗口點擊鼠標右鍵,通過菜單HTFramework -> UI -> Scroll List快捷創建一個ScrollList組件:

在這里插入圖片描述

ScrollList是針對ScrollRect的擴展,所以他看起來就跟一個ScrollRect一模一樣:

在這里插入圖片描述

2.ScrollList的屬性

只不過ScrollList多出來了幾個屬性,以便于我們配置滾動數據列表

在這里插入圖片描述

Element Template:數據元素模板,單條數據對應的在UI界面顯示的元素的模板。
Scroll Direction:滾動方向。
First Position:第一條元素的位置。
Row Number:一行元素的數量,垂直滾動時,一行顯示的元素超出此數量后將換到下一行,水平滾動時,一列顯示的元素超出此數量后將換到下一列。
Spacing:元素間距,x為水平間距,y為垂直間距。

3.自定義數據類

首先,我們需要自定義數據類,并繼承至ScrollListData,其作為單條數據對應的對象,比如這里的TestData

/// <summary>
/// 測試數據
/// </summary>
public class TestData : ScrollListData
{public string ID;public string Name;
}

4.自定義元素類

然后,還需要自定義元素類,并繼承至ScrollListElement,其作為單條數據對應的在UI界面顯示的元素,比如這里的TestElement

/// <summary>
/// 測試元素
/// </summary>
public class TestElement : ScrollListElement
{public Text Txt_Content;//更新數據時回調public override void UpdateData(){base.UpdateData();//獲取對應的數據(也即是上文的 TestData)if (Data != null){//將 Name 顯示到UI界面Txt_Content.text = Data.Cast<TestData>().Name;}}
}

5.修改元素模板

將自定義元素類TestElement掛到元素模板上:

在這里插入圖片描述

并根據自己的需求修改元素模板

在這里插入圖片描述

比如我這里將元素的單行上限設置為3,也即是每排滿3個元素便換下一行。

6.新增數據

至此,我們便可以直接像操作數據一樣操作這個ScrollList了,比如新增數據:

            //新增一條數據scrollList.AddData(new TestData() { Name = "張三" });scrollList.AddData(new TestData() { Name = "李四" });scrollList.AddData(new TestData() { Name = "王五" });scrollList.AddData(new TestData() { Name = "趙六" });scrollList.AddData(new TestData() { Name = "宋七" });//新增多條數據List<TestData> datas = new List<TestData>();scrollList.AddDatas(datas);

只需調用新增數據接口就行了,UI元素會自動生成,不用關心如何維護數據、何時創建UI元素、何時刪除UI元素等。

在這里插入圖片描述

7.刪除數據

            //新增一條數據TestData testData = new TestData() { Name = "張三" };scrollList.AddData(testData);scrollList.AddData(new TestData() { Name = "李四" });scrollList.AddData(new TestData() { Name = "王五" });scrollList.AddData(new TestData() { Name = "趙六" });scrollList.AddData(new TestData() { Name = "宋七" });//刪除一條數據(張三)scrollList.RemoveData(testData);

在這里插入圖片描述

8.更新數據

            //新增一條數據TestData testData = new TestData() { Name = "張三" };scrollList.AddData(testData);scrollList.AddData(new TestData() { Name = "李四" });scrollList.AddData(new TestData() { Name = "王五" });scrollList.AddData(new TestData() { Name = "趙六" });scrollList.AddData(new TestData() { Name = "宋七" });//數據發生了改變,更新數據testData.Name = "張三三三";scrollList[testData].UpdateData();

在這里插入圖片描述

9.清空數據

            //清空數據scrollList.ClearData();

清空數據后,所有UI元素會被對象池自動回收,基于對象池的控制,所以即便是頻繁的增、刪、改數據操作也不會產生性能瓶頸。

當然,這里只是介紹了一些基礎操作,其他更多的信息請參閱源碼。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905837.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905837.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905837.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

經典案例 | 筑基與躍升:解碼制造企業產供銷協同難題

引言 制造企業如何在投產初期突破管理瓶頸&#xff0c;實現高效運營&#xff1f;G公司作為某大型集團的新建子公司&#xff0c;面對產供銷流程缺失、跨部門協同低效等難題&#xff0c;選擇與AMT企源合作開展流程優化。 項目通過端到端流程體系搭建、標準化操作規范制定及長效管…

【Python 操作 MySQL 數據庫】

在 Python 中操作 MySQL 數據庫主要通過 pymysql 或 mysql-connector-python 庫實現。以下是完整的技術指南&#xff0c;包含連接管理、CRUD 操作和最佳實踐&#xff1a; 一、環境準備 1. 安裝驅動庫 pip install pymysql # 推薦&#xff08;純Python實現&#xff0…

記錄vsCode連接gitee并實現項目拉取和上傳

標題 在 VSCode 中上傳代碼到 Gitee 倉庫 要在 VSCode 中將代碼上傳到 Gitee (碼云) 倉庫&#xff0c;你可以按照以下步驟操作&#xff1a; 準備工作 確保已安裝 Git確保已安裝 VSCode擁有 Gitee 賬號并創建了倉庫 可以參考該文章的部分&#xff1a;idea實現與gitee連接 操…

【信息系統項目管理師】第6章:項目管理概論 - 31個經典題目及詳解

更多內容請見: 備考信息系統項目管理師-專欄介紹和目錄 文章目錄 第一節 PMBOK的發展【第1題】【第2題】【第3題】【第4題】【第5題】【第6題】第二節 項目基本要素【第1題】【第2題】【第3題】【第4題】【第5題】【第6題】【第7題】【第8題】【第9題】【第10題】第三節 項目經…

簡單介紹C++中線性代數運算庫Eigen

Eigen 是一個高性能的 C 模板庫&#xff0c;專注于線性代數、矩陣和向量運算&#xff0c;廣泛應用于科學計算、機器學習和計算機視覺等領域。以下是對 Eigen 庫的詳細介紹&#xff1a; 1. 概述 核心功能&#xff1a;支持矩陣、向量運算&#xff0c;包括基本算術、矩陣分解&…

生產級編排AI工作流套件:Flyte全面使用指南 — Core concepts Launch plans

生產級編排AI工作流套件&#xff1a;Flyte全面使用指南 — Core concepts Launch plans Flyte 是一個開源編排器&#xff0c;用于構建生產級數據和機器學習流水線。它以 Kubernetes 作為底層平臺&#xff0c;注重可擴展性和可重復性。借助 Flyte&#xff0c;用戶團隊可以使用 P…

Python 之類型注解

類型注解允許開發者顯式地聲明變量、函數參數和返回值的類型。但是加不加注解對于程序的運行沒任何影響&#xff08;是非強制的&#xff0c;且類型注解不影響運行時行為&#xff09;&#xff0c;屬于 有了挺好&#xff0c;沒有也行。但是大型項目按照規范添加注解的話&#xff…

rocketmq并發消費

netty的handler 在netty的網絡模型中&#xff0c;在想bootstrap設置handler時&#xff0c; 都是在等待 事件 的到來&#xff0c;才會被調用的方法&#xff0c;都是被動的&#xff0c; 服務端等待 request 的到來&#xff0c;進行read, 然后主動調用writeAndFlush寫出去。 客戶…

React 播客專欄 Vol.9|React + TypeScript 項目該怎么起步?從 CRA 到配置全流程

&#x1f44b; 歡迎回到《前端達人 React 播客書單》第 9 期&#xff08;正文內容為學習筆記摘要&#xff0c;音頻內容是詳細的解讀&#xff0c;方便你理解&#xff09;&#xff0c;請點擊下方收聽 你是不是常在網上看到 .tsx 項目、Babel、Webpack、tsconfig、Vite、CRA、ESL…

【PmHub后端篇】PmHub中基于自定義注解和AOP的服務接口鑒權與內部認證實現

1 引言 在現代軟件開發中&#xff0c;尤其是在微服務架構下&#xff0c;服務接口的鑒權和內部認證是保障系統安全的重要環節。本文將詳細介紹PmHub中如何利用自定義注解和AOP&#xff08;面向切面編程&#xff09;實現服務接口的鑒權和內部認證&#xff0c;所涉及的技術知識點…

芯片測試之X-ray測試

原理&#xff1a; X-ray是利用陰極射線管產生高能量電子與金屬靶撞擊&#xff0c;在撞擊過程中&#xff0c;因電子突然減速&#xff0c;其損失的動能會以X-Ray形式放出。而對于樣品無法以外觀方式觀測的位置&#xff0c;利用X-Ray穿透不同密度物質后其光強度的變化&#xff0c;…

QBasic 一款古老的編程語言在現代學習中的價值(附程序)

QBasic&#xff08;Quick Beginner’s All-purpose Symbolic Instruction Code&#xff09;是微軟公司于 1991 年推出的一款簡單易學的編程語言&#xff0c;作為BASIC語言的變種&#xff0c;它曾廣泛應用于教育領域和初學者編程入門。盡管在當今Python、Java等現代編程語言主導…

【八股戰神篇】Java高頻基礎面試題

1 面向對象編程有哪些特性&#xff1f; 面向對象編程&#xff08;Object-Oriented Programming&#xff0c;簡稱 OOP&#xff09;是一種以對象為核心的編程范式&#xff0c;它通過模擬現實世界中的事物及其關系來組織代碼。OOP 具有三大核心特性&#xff1a;封裝、繼承、多態。…

科學養生指南:解鎖健康生活新方式

在快節奏的現代生活中&#xff0c;健康養生成為人們關注的焦點。想要擁有良好的身體狀態&#xff0c;無需依賴復雜的傳統理論&#xff0c;通過科學的生活方式&#xff0c;就能輕松實現養生目標。? 規律運動是健康的基石。每周進行 150 分鐘以上的中等強度有氧運動&#xff0c…

OpenCV閾值處理完全指南:從基礎到高級應用

引言 閾值處理是圖像處理中最基礎、最常用的技術之一&#xff0c;它能夠將灰度圖像轉換為二值圖像&#xff0c;為后續的圖像分析和處理奠定基礎。本文將全面介紹OpenCV中的各種閾值處理方法&#xff0c;包括原理講解、代碼實現和實際應用場景。 一、什么是閾值處理&#xff1…

Java8到24新特性整理

本文整理了 Java 8 至 Java 24 各版本的新特性&#xff0c;內容包括每個版本的新增功能分類&#xff08;如語法增強、性能優化、工具支持等&#xff09;、詳細的代碼示例&#xff0c;并結合官方文檔資料&#xff0c;分析每項特性的應用場景及優缺點。Java 8 發布于 2014 年&…

輪詢仲裁器

參考視頻 https://www.bilibili.com/video/BV1VQ4y1w7Rr/?spm_id_from333.337.search-card.all.click&vd_sourceaedd69dc9740e91cdd85c0dfaf25304b 算法原理

Armijo rule

非精線搜索步長規則Armijo規則&Goldstein規則&Wolfe規則_armijo rule-CSDN博客 [原創]用“人話”解釋不精確線搜索中的Armijo-Goldstein準則及Wolfe-Powell準則 – 編碼無悔 / Intent & Focused

力扣HOT100之二叉樹:102. 二叉樹的層序遍歷

這道題太簡單了&#xff0c;相當于基礎的模板題&#xff0c;但凡涉及到層序遍歷一定會用到隊列來實現&#xff0c;其他的倒沒啥好說的&#xff0c;用兩層while循環來層序遍歷&#xff0c;外層while循環用于控制訪問二叉樹的每一層&#xff0c;而內層while循環則負責收割每一層的…

Ubuntu24.04 安裝 5080顯卡驅動以及cuda

前言 之前使用Ubuntu22.04版本一直報錯,然后換了24.04版本才能正常安裝 一. 配置基礎環境 Linux系統進行環境開發環境配置-CSDN博客 二. 安裝顯卡驅動 1.安裝驅動 按以下步驟來&#xff1a; sudo apt update && sudo apt upgrade -y#下載最新內核并安裝 sudo add…