当前位置: 首页 > news >正文

Unity UGUI图片循环列表插件

效果展示:

下载链接:https://gf.bilibili.com/item/detail/1111843026

概述:

LoopListView2 是一个与 UGUI ScrollRect 相同的游戏对象的组件。它可以帮助 UGUI ScrollRect 以高效率和节省内存的方式支持任意数量的项目。

对于具有10,000个项目的ScrollRect, LoopListView2并不真正创建10,000个项目,而是根据视窗的大小创建几个项目。

例如,当ScrollRect向上移动时,LoopListView2组件将进行检查最上面的项目的位置,一旦最上面的项目离开视口,则LoopListView2组件将回收最上面的项,同时检查最下方的项目位置,一旦最下方的项目接近视口底部LoopListView2组件将调用onGetItemByIndex处理程序来创建一个新项和然后将新创建的项放置在最下面的项下,因此新创建的项变为新的最下面的项目。

每个项目可以使用不同的预制件,可以有不同的高度/宽度。

在该文件夹中有几个示例可以帮助您了解LoopListView2组件与路径:Assets -> SuperScrollView -> Demo ->场景。菜单场景是入口。

下图是toptobutton安排的滚动矩形的样子:

 在上图中,scrollrect有10000个项目,但实际上,只有7个项目真正创建。

Inspector设置:

在Inspector中,为了确保LoopListView2组件工作良好,有几个需要设置的参数:

ItemPrefabList:这是要克隆的现有项。

每个项目可以使用不同的预制件,每个预制件可以有不同的默认填充滚动块中每个项目之间的间距)。而且,每个预制件都可以有不同的默认x本地位置(用于垂直scrollrect)或默认y本地位置(用于水平scrollrect),这里,称为(X/Y) pooffset。每个预制件都有一个回收InitCreateCount是开始时在池中创建的计数。

事实上,在运行时,每个项目可以有不同的填充和(X/Y) posofset,你可以改变一个item的padding和(X/Y)PosOffset在你的onGetItemByIndex回调中。你可以得到/设置它们LoopListViewItem2。填充和LoopListViewItem2。StartPosOffset。

重要提示:所有itemPrefab的localScale必须为(1,1,1)。

SupportScrollbar:如果选中,LoopListView2组件将支持滚动条。

ItemSnapEnable:

如果选中,LoopListView2组件将尝试将项捕捉到中的配置位置ViewPort。

ItemSnapPivot是项目的快速枢轴点的位置,定义为矩形本身大小的一小部分。0,0对应左下角而1,1对应右上角。

ViewPortSnapPivot是ScrollRect ViewPort的snap枢轴点的位置,定义为矩形本身大小的分数。0,0对应左下角,而1,1对应右上角。

ArrangeType:滚动方向,有四种类型:

(1) TopToBottom:这种类型用于垂直滚动,item0,item1,…itemN是在scrollrect视口中从上到下依次定位,就像下面:

(2) BottomToTop:这种类型用于垂直滚动条,item0,item1,…itemN是在scrollrect视口中从下到上依次定位,就像下面:

(3) LeftToRight:这种类型用于水平滚动,item0,item1,…itemN是在scrollrect视口中从左到右依次定位。

(4) righttolleft:该类型用于水平滚动,item0,item1,…itemN是在scrollrect视口中从右到左依次定位。

重要的公开方法:

public void InitListView(int itemTotalCount,
System. Func<LoopListView2, int, LoopListViewItem2> onGetItemByIndex,
LoopListViewInitParam initParam = nu1l)

InitListView方法用于初始化LoopListView2组件。有3个参数:

itemTotalCount:滚动视图中的项目总数。如果该参数设置为-1,则表示有无限项,不支持滚动条,ItemIndex可以从-MaxInt到+MaxInt。如果设置sssa value >=0,则ItemIndex只能来自0到itemTotalCount -1。

onGetItemByIndex:当一个项目进入scrollrect视图时,这个Action将被调用使用项目索引作为参数,以允许您创建项目并更新其内容。LoopListViewItem2是onGetItemByIndex的返回值,每个创建的项目都有一个自动附加的LoopListViewItem2组件:

LoopListViewItem2组件是一个非常简单的例子:

mItemIndex属性表示列表中项目的索引,如上所述,如果itemTotalCount设置为-1,则mItemIndex可以从-MaxInt到+MaxInt。如果将itemTotalCount设置为>=0,则mItemIndex只能在0到itemTotalCount之间取值1。

mItemId属性表示该项的id。此属性在创建项时设置从池中获取,并且在项目回收回池之前将不再更改。下面的代码是onGetItemByIndex的示例:

LoopListViewItem2 OnGetItemByIndex(LoopListView2 listView, int index)
{
if (index < 0 || index >= DataSourceMgr.Get.TotalItemCount)
{
return null;
}
//get the data to showing 
ItemData itemData = DataSourceMgr.Get.GetItemDataByIndex(index);
if(itemData == null)
{
return null;
}
/*get a new item. Every item can use a different prefab, the parameter of the 
NewListViewItem is 
the prefab’name. 
And all the prefabs should be listed in ItemPrefabList in LoopListView2 Inspector 
Setting */ 
LoopListViewItem2 item = listView.NewListViewItem("ItemPrefab1");
ListItem2 itemScript = item.GetComponent<ListItem2>();
// IsInitHandlerCalled is false means this item is new created but not fetched from pool. 
if (item.IsInitHandlerCalled == false)
{
item.IsInitHandlerCalled = true;
itemScript.Init();// here to init the item, such as add button click event listener.
}
//update the item’s content for showing, such as image,text. 
itemScript.SetItemData(itemData,index);
return item;
}

此方法用于获取新项目,新项目是命名的预制件的克隆itemPrefabName。此方法通常在onGetItemByIndex中使用。

 此方法可用于在运行时设置滚动视图的项目总数。如果此参数设置为-1,则表示有无限个项目,并且不支持滚动条ItemIndex取值范围从-MaxInt到+MaxInt。如果将该参数设置为>=0,则ItemIndex只能在0到itemTotalCount -1之间取值。

如果resetPos设置为false,则在此方法完成后滚动块的内容位置不会改变。

通过itemIndex获取可见项。如果项不可见,则此方法返回null。

所有可见项存储在List<LoopListViewItem2>中,命名为mItemList;这个方法是通过可见项列表中的索引获取可见项。参数索引为0 ~mItemList.Count。

获取所有可见项目的总数。

通过itemIndex更新项。如果itemIndex-th项不可见,则使用此方法什么都没有。否则,该方法将首先调用onGetItemByIndex(itemIndex)来获取一个更新项目,然后重新定位所有可见项目的位置。

此方法将更新所有可见项。

这个方法将滚动内容的位置移动到itemIndex-th item +的位置在当前版本中,itemIndex是从0到MaxInt, offset是从0到scrollrect视窗大小。

对于垂直滚动块,当一个可见项的高度在运行时发生变化时,这个方法应该调用LoopListView2组件来重新定位所有可见项的位置。

对于水平滚动块,当可见项的宽度在运行时发生变化时,则使用此方法来让LoopListView2组件重新定位所有可见项的位置。

快速移动将立即完成

使用viewport快照点获取最近的项目索引。

设置snap目标项索引。这个方法在PageViewDemo中使用。

清除当前的捕捉目标,然后LoopScrollView2将自动捕捉到CurSnapNearestItemIndex。

相关文章:

Unity UGUI图片循环列表插件

效果展示&#xff1a; 下载链接&#xff1a;https://gf.bilibili.com/item/detail/1111843026 概述&#xff1a; LoopListView2 是一个与 UGUI ScrollRect 相同的游戏对象的组件。它可以帮助 UGUI ScrollRect 以高效率和节省内存的方式支持任意数量的项目。 对于具有10,000个…...

Kafka系列教程 - Kafka 生产者 -2

1. 生产者简介 不管是把 Kafka 作为消息队列系统、还是数据存储平台&#xff0c;总是需要一个可以向 Kafka 写入数据的生产者和一个可以从 Kafka 读取数据的消费者&#xff0c;或者是一个兼具两种角色的应用程序。 使用 Kafka 的场景很多&#xff0c;诉求也各有不同&#xff…...

AI Chat API 对接说明

AI Chat API 对接说明 我们知道&#xff0c;市面上一些问答 API 的对接还是相对没那么容易的&#xff0c;比如说 OpenAI 的 Chat Completions API&#xff0c;它有一个 messages 字段&#xff0c;如果要完成连续对话&#xff0c;需要我们把所有的上下文历史全部传递&#xff0…...

Thread线程基础使用

多线程目的&#xff1a;其实就是希望“并行”执行多任务&#xff0c;提升效率。 单核多线程基于时间片轮询 并发而非并行 线程最大数等于cpu核心数为佳 namespace thinger.ThreadDemo {class Program{//主线程static void Main(string[] args){Console.WriteLine("这个…...

【Linux】结构化命令

结构化命令structured command&#xff1a;允许脚本根据条件跳过部分命令&#xff0c;改变执行流程。 1、if-then语句 格式1&#xff1a; if command then commands fi 格式2&#xff1a; if command; then commands fi 运行if之后的command命令&#xff0c;如果它的退出状态码…...

ElasticSearch01-概述

零、文章目录 ElasticSearch01-概述 1、Elastic Stack &#xff08;1&#xff09;简介 官网地址&#xff1a;https://www.elastic.co/cn/ELK是一个免费开源的日志分析架构技术栈总称&#xff0c;包含三大基础组件&#xff0c;分别是Elasticsearch、Logstash、Kibana。但实际…...

docker xxxx is using its referenced image ea06665f255d

Error response from daemon: conflict: unable to remove repository reference “registrxxxxxx” (must force) - container 9642fd1fd4a0 is using its referenced image ea06665f255d 这个错误表明你尝试删除的镜像正在被一个容器使用&#xff0c;因此无法删除。要解决这…...

Vue 2 中 v-text 和 v-html 指令的使用详解

目录 Vue 2 中 v-text 和 v-html 指令的使用详解 v-text 指令 简介 基本语法 示例 1&#xff1a;基础用法 特点 v-html 指令 简介 基本语法 示例 2&#xff1a;基础用法 注意事项 区别与选择指南 何时使用 最佳实践 Vue 2 中 v-text 和 v-html 指令的使用详解 V…...

高级Python游戏开发:创建一款多人对战坦克大战

在本教程中,我们将用Python的Pygame库开发一款高级的坦克大战游戏。这款游戏支持多人对战、碰撞检测、子弹射击以及地图障碍生成,适合作为学习Python高级游戏开发的练习项目。 一、游戏功能概述 多人对战模式:玩家可以操作坦克,在同一屏幕上互相攻击。子弹射击:坦克可以发…...

数据结构_拓扑排序

拓扑排序 &#xff08;所有点按照先后顺序排序&#xff09; 1.先找到入度为0的点&#xff0c;记录之后&#xff0c;删除这个点和它的出边&#xff1b; 2.若有两个可选&#xff0c;随便选择一个 例 a的入度为0,选a [a] 随便选一个 [a,e] 再找入度为0的点 再选c 最后选d 拓…...

Edge SCDN 边缘安全加速有什么用?

Edge SCDN是最新推出的边缘安全加速服务&#xff0c;它是一种融合了安全防护和内容分发加速功能的网络服务技术&#xff0c;通过在网络边缘部署服务器节点&#xff0c;来优化内容的传输和用户的访问体验&#xff0c;同时保障网络安全。 抵御 DDoS 攻击&#xff1a; Edge SCDN …...

被狗咬住怎么让它松口?

当遭遇狗咬住的惊险状况&#xff0c;保持冷静是首要原则&#xff0c;慌乱只会让事态愈发糟糕。因为狗能敏锐感知人类的情绪&#xff0c;你的镇定能避免它因你的恐惧而愈发兴奋或紧张。 切勿盲目地用力拉扯被咬住的部位。狗的咬合力颇为强大&#xff0c;强行拉扯可能致使伤口撕裂…...

MySQL迁移SQLite 借助PYTHON脚本

使用 Python 脚本将 MySQL 数据库迁移到 SQLite 是一种灵活且强大的方法。 下面是一个基本的脚本示例&#xff0c;使用 pandas 和 sqlite3 库来实现这一过程。 这个脚本假设你已经安装了 pandas 和 mysql-connector-python 库。 步骤 安装必要的库: 如果尚未安装&#xff…...

Python什么是动态调用方法?What is Dynamic Method Invocation? (中英双语)

什么是动态调用方法&#xff1f; 动态调用方法指通过方法或属性的名称&#xff0c;在运行时而非编译时调用对象的方法或访问其属性。换句话说&#xff0c;在编写代码时&#xff0c;方法名或属性名可以是变量&#xff0c;只有在程序运行时才能确定调用的内容。这种特性允许程序…...

Cesium中实现仿ArcGIS三维的动态图层加载方式

Cesium 加载 ArcGIS 动态图层的方式 如果你在 Cesium 中加载过 ArcGIS 的动态图层&#xff0c;你会发现&#xff0c;Cesium 对于动态图层仍然采用类似切片图层的逻辑进行加载。也就是每个固定的瓦片 export 一张图片。 这样会造成一些问题&#xff1a; 请求量大&#xff0c;…...

数据冒险、控制冒险、结构冒险

计算机组成原理 数据冒险、控制冒险、结构冒险 对所有用户&#xff08;所有程序员&#xff09;可见&#xff1a;PSW、PC、通用寄存器 PSW&#xff08;条件转移需要用到&#xff0c;程序员使用CMP指令的时候也需要用到所以是对用户可见&#xff09;PC&#xff08;跳转指令需要…...

TCA9555芯片手册解读(6)

接前一篇文章&#xff1a;TCA9555芯片手册解读&#xff08;5&#xff09; 二、详述 7. 上电复位 当电源&#xff08;从0V&#xff09;施加到VCC时&#xff0c;内部通电复位将TCA9555保持在复位状态&#xff0c;直到VCC达到VPOR。此时&#xff0c;重启条件被释放&#xff0c;T…...

NodeJs-fs模块

fs 全称为 file system &#xff0c;称之为 文件系统 &#xff0c;是 Node.js 中的 内置模块&#xff0c; fs模块可以实现与硬盘的交互&#xff0c;例如文件的创建、删除、重命名、移动&#xff0c;内容的写入读取等以及文件夹相关操作 写入文件 异步写入 // 导入fs模块const f…...

Transformer: Attention Is All You Need (2017) 翻译

论文&#xff1a;Attention Is All You Need 下载地址如下: download: Transformer Attention Is All you need Attention Is All You Need 中文 《Attention Is All You Need》是《Transformer》模型的开创性论文&#xff0c;提出了一种全新的基于注意力机制的架构&#xf…...

【记录】Django解决与VUE跨域问题

1 梗概 这里记录Django与VUE的跨域问题解决方法&#xff0c;主要修改内容是在 Django 中。当然其他的前端项目 Django 也可以这样处理。 2 安装辅助包 pip install django-cors-headers3 配置 settings.py INSTALLED_APPS [ # ... corsheaders, # ... ] 为了响应…...

5分钟快速上手SMUDebugTool:AMD Ryzen硬件调试终极指南

5分钟快速上手SMUDebugTool&#xff1a;AMD Ryzen硬件调试终极指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://g…...

抖音批量下载助手:高效构建个人视频素材库的完整解决方案

抖音批量下载助手&#xff1a;高效构建个人视频素材库的完整解决方案 【免费下载链接】douyinhelper 抖音批量下载助手 项目地址: https://gitcode.com/gh_mirrors/do/douyinhelper 在内容创作成为主流表达方式的今天&#xff0c;视频素材的获取和管理成为创作者面临的核…...

视频字幕提取难题?这个本地OCR工具让你轻松搞定SRT字幕

视频字幕提取难题&#xff1f;这个本地OCR工具让你轻松搞定SRT字幕 【免费下载链接】video-subtitle-extractor 视频硬字幕提取&#xff0c;生成srt文件。无需申请第三方API&#xff0c;本地实现文本识别。基于深度学习的视频字幕提取框架&#xff0c;包含字幕区域检测、字幕内…...

书匠策AI到底有多懂毕业生?一个论文小白的“开挂“实录,看完你也想试!

嗨&#xff0c;各位正在为毕业论文头秃的宝子们&#xff01;&#x1f44b; 我是你们的论文科普搭子&#xff0c;今天不讲枯燥的写作技巧&#xff0c;直接给大家安利一个我最近发现的"宝藏神器"——书匠策AI&#xff08; 官网直达&#xff1a;www.shujiangce.com&…...

C++内存对齐与布局优化

C内存对齐与布局优化内存对齐是编译器为了提高内存访问效率而采用的策略。理解内存对齐规则对于优化结构体大小和提高程序性能至关重要。结构体的内存布局受对齐规则影响&#xff0c;可能包含填充字节。#include #includestruct Unaligned { char a; int b; char c; };struct A…...

量子虚时演化算法:原理、实现与应用

1. 量子虚时演化算法概述虚时演化&#xff08;Imaginary-Time Evolution, ITE&#xff09;是量子物理模拟中的核心数学工具&#xff0c;其核心思想是将时间变量t替换为虚数-iβ&#xff08;β为实数&#xff09;。这种变换将薛定谔方程中的幺正演化算符e^(-iHt)转化为非幺正的e…...

工业眼睛:11 老手血泪Tips + 新手避坑清单

11 老手血泪Tips + 新手避坑清单 上回聊完机器视觉给工厂安了“眼睛”,AI让它升级成“火眼金睛”,数据闭环一接,生产线直接会自己挑毛病。今天不整高大上的理论,来点真刀真枪的干货——11条老手血泪Tips(全是师傅们用命换来的教训,踩坑踩到哭),外加新手避坑清单(直接…...

React动画革命:react-tween-state 完全指南 - 10分钟掌握React平滑过渡动画

React动画革命&#xff1a;react-tween-state 完全指南 - 10分钟掌握React平滑过渡动画 【免费下载链接】react-tween-state React animation. 项目地址: https://gitcode.com/gh_mirrors/re/react-tween-state react-tween-state 是一款轻量级的 React 动画库&#xff…...

YOLOv11光伏板二极管异常目标检测数据集-45张-Solar-panel-anomalies-1

YOLOv11光伏板二极管异常目标检测数据集 &#x1f4ca; 数据集基本信息 目标类别&#xff1a; [‘Diode anomaly’, ‘Hot Spots’, ‘Reverse polarity’]中文类别&#xff1a;[‘二极管异常’, ‘热点’, ‘反向极性’]训练集&#xff1a;31 张验证集&#xff1a;9 张测试集&…...

AI Agent Harness Engineering 技术选型指南:根据场景选择合适的大模型与框架

AI Agent Harness Engineering 技术选型指南&#xff1a;根据场景选择合适的大模型与框架 引言 痛点引入 你是否遇到过这样的场景&#xff1f;产品经理拍板要做一个**“能帮企业HR自动筛选简历、邀约面试、生成入职指南并跟进试用期转正材料”**的“超级HR助手”AI Agent——…...