Unity 使用NGUI制作无限滑动列表

原理:

复用几个子物体,通过子物体的循环移动实现,如下图

在第一个子物体滑动到超出一定数值时,使其放到最下方

--------------------------------------------------------------》

然后不停的循环往复,向下滑动也是这样的原理

下边上代码:

首先得到Scorll View的高度,使用UIpanel获取,

UIPanel uiPanel = this.GetComponent<UIPanel>();

计算一个最高点和一个最低点

 

使用 Scroll View的y轴位置,加减其高度的一半获得

topY = grid.transform.TransformPoint(new Vector3(0, uiPanel.height / 2 + this.transform.position.y, 0));
bottomY = grid.transform.TransformPoint(new Vector3(0, this.transform.position.y - uiPanel.height / 2, 0));

为什么要转换为世界坐标呢?

首先要看一下Grid和Item是如何滑动的,如下:

可以发现滑动的时候,Grid和子物体面板上的坐标压根不变,显示的都是本地坐标,所以要用一个变量来判断,就必须转换到世界空间下的坐标,有了这个就可以进行判断了,代码如下:(目前代码不是最优,中间增加了没有必要的判断,后边会优化掉)。

 // 处理向上滚动 
for (int i = 0;i < visibleItems.Count; i++)
{
    if (grid.transform.TransformPoint(visibleItems[i].transform.localPosition).y > topY.y)
    {

    }
 }   
 // 处理向下滚动
 for (int i = 0; i < visibleItems.Count; i++)
 {
      if (grid.transform.TransformPoint(visibleItems[i].transform.localPosition).y < bottomY.y)
      {

       }
 }

然后经过判断,就可以对子物体的坐标位置赋值了,前边已经说过子物体的本地坐标是不变的,那么就可以 利用这一点,在头部Item到尾部时,让它的本地坐标减去中间间隔的子物体数量*子物体的高度,在尾部到头部也是一样,代码如下:

//头到尾
visibleItems[i].transform.localPosition = new Vector3(0, visibleItems[i].transform.localPosition.y - visibleItemCount * 100, 0);

//尾到头
visibleItems[i].transform.localPosition = new Vector3(0, visibleItems[i].transform.localPosition.y + visibleItemCount * 100, 0);

如何判断向上还是向下滑动?

记录grid的世界坐标,如果这一帧的值比上一帧的值小,则是向下,否则是向上,并在Update函数下执行,使用一个bool值,使其只在拖动列表的时候执行,代码如下:

    private void Update()
    {
        if (isDrag)
        {
            currentPosition = grid.transform.position.y;
            // 处理向上滚动
            if (currentPosition > lastPosition)
            {

            }
            // 处理向下滚动
            else if (currentPosition < lastPosition)
            {

            }
            lastPosition = currentPosition;
        }    
    }

这个bool值如何赋值?

使用Scroll View的两个函数.onDragStarted,onDragFinished,在代码中给这两个函数分别绑定改变这个bool的值的函数即可。

最后结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络安全蜜罐产品研究现状

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、知识点总结 1、蜜罐&#xff08;Honeypot&#xff09;&#xff1a;诱捕攻击者的一个陷阱。 2、蜜网&#xff08;Honeynet&#xff09;&#xff1a;采用了技术…

SpringBoot3—场景整合:环境准备

一、云服务器 阿里云服务器开通安装以下组件 dockerrediskafkaprometheusgrafana 下载windterm&#xff1a;https://github.com/kingToolbox/WindTerm/releases/download/2.5.0/WindTerm_2.5.0_Windows_Portable_x86_64.zip 重要&#xff1a;开通云服务器以后&#xff0c;请一…

Ollama进行DeepSeek本地部署存在安全风险解决方案,nginx反向代理配置

文章目录 概要整体架构流程技术细节**## 1.下载nginx [https://nginx.org/en/download.html](https://nginx.org/en/download.html),推荐Stable version稳定版**2.下载完成解压文件,打开conf文件夹下的nginx.conf,贴上反向代理配置3.然后点击解压文件夹下的nginx.exe,启动成…

【音视频】ffmpeg音视频处理基本流程

一、ffmpeg音视频处理基本流程 首先先看两条命令 ffmpeg -i 1.mp4 -acodec copy -vcodec libx264 -s 1280x720 2.flv ffmpeg -i 1.mp4 -acodec copy -vcodec libx265 -s 1280x720 3.mkv-i :表示输入源&#xff0c;这里是1.mp4&#xff0c;是当前路径下的视频文件-acodec copy…

计算机网络基础:认识网络拓扑结构

计算机网络基础&#xff1a;认识网络拓扑结构 一、前言二、网络拓扑结构的基本概念2.1 定义2.2 作用 三、常见的物理拓扑结构3.1 总线型拓扑结构3.1.1 定义和结构3.1.2 工作原理3.1.3 优点3.1.4 缺点3.1.5 适用场景3.1.6 示例图 3.2 星型拓扑结构3.2.1 定义和结构3.2.2 工作原理…

基于Android平台的SOME/IP测试模块 EPT-ETS

在汽车产业智能化、网联化的时代浪潮中&#xff0c;汽车电子系统正经历着前所未有的变革。SOME/IP&#xff08;Scalable service-Oriented MiddlewarE over IP&#xff09;协议作为汽车电子通信领域的关键技术&#xff0c;其稳定性、可靠性与高效性对于整车性能的提升起着至关重…

【实战 ES】实战 Elasticsearch:快速上手与深度实践-2.2.3案例:电商订单日志每秒10万条写入优化

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 Elasticsearch批量写入性能调优实战&#xff1a;2.2.3 案例&#xff1a;电商订单日志每秒10万条写入优化1. 原始架构与瓶颈分析1.1 初始集群配置1.2 性能瓶颈定位 2. 全链路…

解决redis lettuce连接池经常出现连接拒绝(Connection refused)问题

一.软件环境 windows10、11系统、springboot2.x、redis 6 7 linux&#xff08;centos&#xff09;系统没有出现这问题&#xff0c;如果你是linux系统碰到的&#xff0c;本文也有一定大参考价值。 根本思路就是&#xff1a;tcp/ip连接的保活(keepalive)。 二.问题描述 在spr…

【开源项目-AI研发】ai-engineer-toolkit

项目地址&#xff08;Fork: 40, Star: 301&#xff09; GitHub - break-into-data/ai-engineer-toolkit: Projects & Resources to help you become a better AI Developer. 项目介绍 官方介绍&#xff1a;帮助你成为更好的 AI 开发者的工具和资源 项目本身是个表格&am…

白帽子讲Web安全资源下载

资源简介 本仓库提供《白帽子讲Web安全》一书的资源下载。这本书由阿里巴巴安全专家刺总编写&#xff0c;是网络安全领域的经典之作&#xff0c;对于从事网络安全工作的专业人士来说是必备的参考资料。 资源描述 书名: 白帽子讲Web安全作者: 阿里巴巴刺总适用人群: 网络安全…

深度学习架构Seq2Seq-添加并理解注意力机制(一)

第一章&#xff1a;人工智能之不同数据类型及其特点梳理 第二章&#xff1a;自然语言处理(NLP)&#xff1a;文本向量化从文字到数字的原理 第三章&#xff1a;循环神经网络RNN&#xff1a;理解 RNN的工作机制与应用场景(附代码) 第四章&#xff1a;循环神经网络RNN、LSTM以及GR…

基于springboot的丢失儿童的基因比对系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 本丢失儿童的基因比对系统采用B/S架构&#xff0c;数据库是MySQL&#xff0c;网站的搭建与开发采用了先进的Java进行编写&#xff0c;使用了Spring Boot框架。该系统从两个对象&#xff1a;由管理员和用户来对系统进行设计构建。用户主要功能包括&#xff1a;用户注册、登…

Mysql面试篇笔记:

优化&#xff1a; 1.如何定位慢查询&#xff1a; 首先压测接口&#xff0c;查看那个接口比较慢&#xff0c;可以通过多种工具&#xff0c;比如Skywaking 可以查看各个接口响应时间&#xff0c;查看接口最慢&#xff0c;然后去跟踪接口&#xff0c;查看详细信息&#…

嵌入式产品级-超小尺寸游戏机(从0到1 硬件-软件-外壳)

Ultra-small size gaming console。 超小尺寸游戏机-Pico This embedded product is mainly based on miniaturization, followed by his game functions are also very complete, for all kinds of games can be played, and there will be relevant illustrations in the fo…

计算机网络-实验四子网划分

三、实验内容及步骤 1.要求 【题目】某单位申请了⼀个 C 类⽹络&#xff0c;单位内部有3个部门&#xff0c;各部门约50台主机&#xff0c;需要划分为3个⼦⽹&#xff0c;各部门接⼊到汇聚交换机&#xff0c;在汇聚层进⾏路由连通。假定申请到的C类网络为200.200.200.0。 2.实…

deepseek+mermaid【自动生成流程图】

成果&#xff1a; 第一步打开deepseek官网(或百度版&#xff08;更快一点&#xff09;)&#xff1a; 百度AI搜索 - 办公学习一站解决 第二步&#xff0c;生成对应的Mermaid流程图&#xff1a; 丢给deepseek代码&#xff0c;或题目要求 生成mermaid代码 第三步将代码复制到me…

SQL Server2022版+SSMS安装教程(保姆级)

SQL Server2022版SSMS安装教程&#xff08;保姆级&#xff09; 一&#xff0c;安装SQL Server数据库 1.下载安装包 &#xff08;1&#xff09;百度网盘下载安装包 链接&#xff1a;https://pan.baidu.com/s/1A-WRVES4EGv8EVArGNF2QQpwd6uvs 提取码&#xff1a;6uvs &#…

Pany-v2:LFI漏洞探测与敏感文件(私钥窃取/其他)自动探测工具

地址:https://github.com/MartinxMax/pany 关于Pany-v2 Pany-v2 是一款 LFI&#xff08;本地文件包含&#xff09;漏洞探测工具&#xff0c;具备自动识别敏感文件的能力。它能够利用 LFI 漏洞检测并提取 id_rsa 私钥、系统密码文件以及其他可能导致安全风险的敏感信息。该工具…

【音视频】视频基本概念

一、视频的基本概念 1.1 视频码率&#xff08;kb/s&#xff09; 视频码率是指视频文件在单位时间内使用的数据流量&#xff0c;也叫码流率。码率越大&#xff0c;说明单位时间内取样率越大&#xff0c;数据流进度也就越高 1.2 视频帧率&#xff08;fps&#xff09; 视频帧率…

三维数据可视化与表面重建:Marching Cubes算法的原理与应用

1. 引言 随着现代医学影像技术的飞速发展&#xff0c;三维数据的可视化与重建已成为医学研究、临床诊断和手术规划的重要工具。在众多三维重建算法中&#xff0c;Marching Cubes算法因其高效、稳定的特性成为从离散数据场中提取等值面的经典方法。本报告将深入探讨Marching Cu…