Unity UGUI图片循环列表插件

news2024/12/15 9:19:49

效果展示:

下载链接: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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2259853.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【经验分享】私有云运维的知识点

最近忙于备考没关注&#xff0c;有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源&#xff0c;但我以交流、交换为主&#xff0c;笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟&#xff0c;为了避免更多人花没必要的钱&#xff0c;所以决定公…

解决MAC装win系统投屏失败问题(AMD显卡)

一、问题描述 电脑接上HDMI线后&#xff0c;电脑上能显示有外部显示器接入&#xff0c;但是外接显示器无投屏画面 二、已测试的方法 1 更改电脑分辨&#xff0c;结果无效 2 删除BootCamp&#xff0c;结果无效 3更新电脑系统&#xff0c;结果无效 4 在设备管理器中&#…

huggingface NLP -Transformers库

1 特点 1.1 易于使用&#xff1a;下载、加载和使用最先进的NLP模型进行推理只需两行代码即可完成。 1.2 灵活&#xff1a;所有型号的核心都是简单的PyTorch nn.Module 或者 TensorFlow tf.kears.Model&#xff0c;可以像它们各自的机器学习&#xff08;ML&#xff09;框架中的…

1. 机器学习基本知识(2)——机器学习分类

1.4 机器学习分类 1.4.1 训练监督 1. 监督学习&#xff1a;已对训练数据完成标记 分类&#xff1a;根据数据及其分类信息来进行训练&#xff0c;使模型能够对新的数据进行分类 回归&#xff1a;给出一组特征值来预测目标数值 2. 无监督学习&#xff1a;没有对训练数据进行任…

[C#]使用winform部署ddddocr的onnx模型进行验证码识别文字识别文字检测

【算法介绍】 ddddocr是一个强大的Python OCR&#xff08;光学字符识别&#xff09;库&#xff0c;特别适用于验证码识别。它利用深度学习技术&#xff0c;如卷积神经网络&#xff08;CNN&#xff09;和循环神经网络&#xff08;RNN&#xff09;&#xff0c;对图像中的文字进行…

day10 电商系统后台API——接口测试(使用postman)

【没有所谓的运气&#x1f36c;&#xff0c;只有绝对的努力✊】 目录 实战项目简介&#xff1a; 1、用户管理&#xff08;8个&#xff09; 1.1 登录 1.2 获取用户数据列表 1.3 创建用户 1.4 修改用户状态 1.5 根据id查询用户 1.6 修改用户信息 1.7 删除单个用户 1.8 …

云服务器搭建lamp的wordpress

Ubuntu系统搭建过程目录 一、检查环境1.1 检查是否安装Apache1.2 检查是否安装Mysql1.3 检查是否安装PHP 二、安装Apache截图 三、安装Mysql3.1 安全安装配置3.2 修改权限和密码3.3 重启MySQL服务 四、安装PHP4.1 测试截图 五、下载并安装wordpress以及配置5.1 下载并解压移动5…

C#速成(GID+图形编程)

常用类 类说明Brush填充图形形状,画刷GraphicsGDI绘图画面&#xff0c;无法继承Pen定义绘制的对象直线等&#xff08;颜色&#xff0c;粗细&#xff09;Font定义文本格式&#xff08;字体&#xff0c;字号&#xff09; 常用结构 结构说明Color颜色Point在平面中定义点Rectan…

babeltrace与CTF相关学习笔记-4

babeltrace与CTF相关学习笔记-4 写在前面metadata_string 重头开始定位&#xff0c;操作meta的位置bt_ctf_trace_get_metadata_string stream部分内存的问题 写在前面 正在并行做几件事。 在编译过程中&#xff0c;突然想到&#xff0c;还是再详细研究一下之前的例程。 一是详…

多旋翼无人机 :桨叶设计—跷跷板结构

多旋翼无人机 &#xff1a;桨叶设计——跷跷板结构 前言跷跷板结构 前言 2024年11月&#xff0c;大疆发布了最新的农业无人机T70和T100。其中T70不同于以往的机型&#xff0c;在桨夹处采用了翘翘板结构&#xff0c;大疆将其命名为“挥舞桨叶”。 T70 无人机如下 放大其中螺旋…

低通滤波器,高通滤波器,公式

1 低通滤波器 &#xff1a;输出的是电容的电压 1 低通滤波器可以把低频信号上面的高频信号给滤掉 2 100hz正常通过 3 经过低通滤波器后&#xff0c;波形光滑&#xff0c;绿色波形。一致 4 电容充电速度跟不上输入信号的速度&#xff08;因为加了电阻&#xff0c;限制了电流&…

如何打造个人知识体系?

第一&#xff0c;每个人的基本情况不同。比如我有一个类别跟「设计」相关&#xff0c;这是自己的个人爱好&#xff0c;但不一定适合其他人。再比如我还有一个类别跟「广告文案」相关&#xff0c;因为里面很多表达可以借用到演讲或写作中&#xff0c;这也不适合所有人。 第二&am…

5G中的ATG Band

Air to Ground Networks for NR是R18 NR引入的。ATG很多部分和NTN类似中的内容类似。比较明显不同的是&#xff0c;NTN的RF内容有TS 38.101-5单独去讲&#xff0c;而ATG则会和地面网络共用某些band&#xff0c;这部分在38.101-1中有描述。 所以会存在ATG与地面网络之间的相邻信…

《自动驾驶技术的深度思考:安全与伦理的挑战》

内容概要 在当今这个自动驾驶技术飞速发展的时代&#xff0c;我们生活的节奏恰似一场疾驰的赛车&#xff0c;然而&#xff0c;赛道上并非总是平坦。在这场技术革命中&#xff0c;安全与伦理问题像是潜伏在阴影中的幽灵&#xff0c;轮番考验着我们的道德底线与法律界限。 随着…

hbuilder 安卓app手机调试中基座如何设置

app端使用基座 手机在线预览功能 1.点击运行 2.点击运行到手机或者模拟器 3.制作自定义调试基座 4.先生成证书【可以看我上一篇文档写的有】&#xff0c;点击打包 5.打包出android自定义调试基座【android_debug.apk】,【就跟app打包一样需要等个几分钟】 6.点击运行到手…

【AIGC】如何高效使用ChatGPT挖掘AI最大潜能?26个Prompt提问秘诀帮你提升300%效率的!

还记得第一次使用ChatGPT时&#xff0c;那种既兴奋又困惑的心情吗&#xff1f;我是从一个对AI一知半解的普通用户&#xff0c;逐步成长为现在的“ChatGPT大神”。这一过程并非一蹴而就&#xff0c;而是通过不断的探索和实践&#xff0c;掌握了一系列高效使用的技巧。今天&#…

汽车免拆诊断案例 | 2014款保时捷卡宴车发动机偶尔无法起动

故障现象 一辆2014款保时捷卡宴车&#xff0c;搭载3.0T 发动机&#xff0c;累计行驶里程约为18万km。车主反映&#xff0c;发动机偶尔无法起动。 故障诊断 接车后试车&#xff0c;发动机起动及运转均正常。用故障检测仪检测&#xff0c;发动机控制单元&#xff08;DME&#x…

aippt:AI 智能生成 PPT 的开源项目

aippt&#xff1a;AI 智能生成 PPT 的开源项目 在现代办公和学习中&#xff0c;PPT&#xff08;PowerPoint Presentation&#xff09;是一种非常重要的展示工具。然而&#xff0c;制作一份高质量的PPT往往需要花费大量的时间和精力。为了解决这一问题&#xff0c;aippt项目应运…

【泛微系统】流程发起次数报表

流程发起次数报表 应用场景: 查询所有发起过业务流程的员工的信息,可作为绩效考核、系统使用情况等依据; 如何使用该SQL生成系统在线报表,实时查询最新的发起数据? 1、数据库创建视图,并定义一个视图名称如;view_test1 2、系统后台建模引擎-表单-右键创建一个虚拟表单…

【电子元器件】电感基础知识

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时&#xff0c;也能帮助其他需要参考的朋友。如有谬误&#xff0c;欢迎大家进行指正。 一、 电感的基本工作原理 1. 电感的基本工作原理如下&#xff1a; &#xff08;1&#xff09; 当线圈中有电流通过时&#…