Unity 自动轮播、滑动轮播

如图所示,可设置轮播间隔,可左右滑动进行轮播

1.在UGUI创建个Image,添加自动水平组件

 2.添加并配置脚本

3.代码如下,都有注释

using UnityEngine;
using UnityEngine.UI;public class IndicatorManager : MonoBehaviour
{public GameObject indicatorPrefab; // 轮播物体的预制体public Transform indicatorParent; // 轮播物体的父级对象private int pageCount = 5; // 页面数量private GameObject[] indicatorsArray; // 存储所有轮播物体的数组private int currentPage = 0; // 当前页面索引private Vector2 slideStartPosition; // 记录滑动的起始点private bool isSliding = false; // 标志是否正在执行滑动操作private bool isAutoSlidingPaused = false; // 标志是否暂停自动轮播private float autoSlideInterval = 3f; // 自动轮播间隔时间private float autoSlideTimer = 0f; // 计时器,用于自动轮播private void Start(){CreateIndicators();UpdateIndicators();}private void Update(){// 更新计时器UpdateTimer();// 检测左右滑动手势DetectSwipe();}// 创建页面指示器private void CreateIndicators(){indicatorsArray = new GameObject[pageCount];for (int i = 0; i < pageCount; i++){GameObject indicator = Instantiate(indicatorPrefab, indicatorParent);indicatorsArray[i] = indicator;}}// 设置当前页面,并更新页面指示器private void SetCurrentPage(int pageIndex){currentPage = Mathf.Clamp(pageIndex, 0, pageCount - 1);UpdateIndicators();}// 更新页面指示器的显示状态private void UpdateIndicators(){for (int i = 0; i < pageCount; i++){// 将当前页面的轮播物体颜色设置为白色,其他页面的轮播物体颜色设置为灰色indicatorsArray[i].GetComponent<Image>().color = (i == currentPage) ? Color.white : new Color(0.5f, 0.5f, 0.5f, 0.5f);}}// 自动轮播方法private void AutoSlide(){// 如果没有正在执行滑动操作且未暂停自动轮播,则切换到下一个页面if (!isSliding && !isAutoSlidingPaused){SetCurrentPage((currentPage + 1) % pageCount);}}// 检测左右滑动手势private void DetectSwipe(){if (Input.GetMouseButtonDown(0)){// 记录滑动的起始点if (IsInsideParent(Input.mousePosition)){slideStartPosition = Input.mousePosition;}}else if (Input.GetMouseButton(0)){float deltaX = Input.mousePosition.x - slideStartPosition.x;// 如果没有正在执行滑动操作且滑动距离足够大,则切换页面if (!isSliding && !isAutoSlidingPaused && Mathf.Abs(deltaX) > 50f && IsInsideParent(Input.mousePosition)){int direction = (deltaX > 0) ? -1 : 1;SetCurrentPage((currentPage + direction + pageCount) % pageCount);// 标志为正在执行滑动操作isSliding = true;// 暂停自动轮播PauseAutoSlide();}}else if (Input.GetMouseButtonUp(0)){// 重置滑动标志isSliding = false;// 恢复自动轮播ResumeAutoSlide();}}// 判断坐标是否在父物体内private bool IsInsideParent(Vector2 position){RectTransform parentRect = indicatorParent.GetComponent<RectTransform>();return RectTransformUtility.RectangleContainsScreenPoint(parentRect, position);}// 更新计时器private void UpdateTimer(){// 如果没有正在执行滑动操作且未暂停自动轮播,则更新计时器if (!isSliding && !isAutoSlidingPaused){autoSlideTimer += Time.deltaTime;// 如果计时器超过轮播间隔时间,则执行自动轮播if (autoSlideTimer >= autoSlideInterval){AutoSlide();// 重置计时器autoSlideTimer = 0f;}}}// 暂停自动轮播private void PauseAutoSlide(){isAutoSlidingPaused = true;}// 恢复自动轮播,并重置计时器private void ResumeAutoSlide(){isAutoSlidingPaused = false;autoSlideTimer = 0f;}
}

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

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

相关文章

【乳腺肿瘤诊断分类及预测】基于LVQNN学习向量量化神经网络

课题名称&#xff1a;基于LVQ神经网络的乳腺肿瘤诊断&#xff08;类型分类&#xff09; 版本日期&#xff1a;2023-03-10 运行方式: 直接运行0501_LVQ0501.m 文件即可 代码获取方式&#xff1a;私信博主或QQ&#xff1a;491052175 模型描述&#xff1a; 威斯康辛大学医学院…

(HAL)STM32F407ZGT6——10-4 高级定时器 PWM 输入模式实验

一、高级定时器简介 高级定时器的框图和通用定时器框图很类似&#xff0c;只是添加了其它的一些功能&#xff0c;如&#xff1a;重复计数器、带死区控制的互补输出通道、断路输入等。 高级定时器的时钟来自APB2, 而PCLK2 168Mhz, 我们设置PPRE2不分频, 因此高级定时器时钟 …

使用.NET6 Avalonia开发跨平台三维应用

本文介绍在Vistual Studio 2022中使用Avalonia和集成AnyCAD Rapid AvaloniaUI三维控件的过程。 0 初始化环境 安装Avalonia.Templates dotnet new install Avalonia.Templates若之前安装过可忽略此步骤。 1 创建项目 选择创建AvaloniaUI项目 选一下.NET6版本和Avalonia版…

detectron2的read_image方法

在看代码的时候&#xff0c;看到一行注释&#xff1a;use PIL, to be consistent with evaluation 说是用PIL方法加载&#xff0c;却又看见了BGR这种表述&#xff0c;后面的调用也都是cv2格式&#xff1a; 那我就要看下这里面是怎么实现的了&#xff0c;找到了read_image函数&…

[R] Why data manipulation is crucial and sensitive?

What does a data scientist really do? Identifying the pattern in cultural consumption, making fancy graph, engage a dialogue between data and the existing literature, refining hypothesis….(done within one months with three to four online meetings with p…

【涵子来信】——拆机,感想

大家好&#xff0c;我是涵子。 初中的第一个学期结束了&#xff0c;来临寒假。我在寒假做了一件有趣的事情&#xff1a;拆机&#xff0c;修手机。今天我来分享分享这件事情。 拆机 情况介绍 拆机对象&#xff1a; iPhone 6 Plus 情况&#xff1a; 电池健康度100%&#xff08…

Unity-WebGL

问题&#xff1a;提示gzip压缩报错解决&#xff1a;关闭打包的地方压缩&#xff0c;如下图问题&#xff1a;窗口未全屏解决&#xff1a;使用百分比画布替换固定尺寸画布 参考&#xff1a;新版Unity打包Webgl端进行屏幕自适应_unity webgl分辨率自适应-CSDN博客问题&#xff1a;…

Springboot+Redis

首先前提我们要在自己的本机电脑或者服务器上安装一个redis的服务器 Redis配置 添加依赖: <!-- SpringBoot Boot Redis --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artif…

Linux Archcraft结合内网穿透实现SSH远程连接

文章目录 1. 本地SSH连接测试2. Archcraft安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接5. 固定SSH公网地址6. SSH固定地址连接7. 结语 Archcraft是一个基于Arch Linux的Linux发行版&#xff0c;它使用最简主义的窗口管理器而不是功能齐全的桌面环境来提供图形化用户界面。…

JVM 内存模型

1 什么是 JVM 内存模型 JVM 需要使用计算机的内存&#xff0c;Java 程序运行中所处理的对象或者算法都会使用 JVM 的内 存空间&#xff0c;JVM 将内存区划分为 5 块&#xff0c;这样的结构称之为 JVM 内存模型。 2 JVM 为什么进行内存区域划分 随着对象数量的增加&#xff…

马哈鱼SQLFlow Lite的python版本

Gudu SQLFlow 是一款用来分析各种数据库的 SQL 语句和存储过程来获取复杂的数据血缘关系并进行可视化的工具。 Gudu SQLFlow Lite version for python 可以让 python 开发者把数据血缘分析和可视化能力快速集成到他们自己的 python 应用中。 Gudu SQLFlow Lite version for p…

Banana Pi BPI-R4开源路由器开发板快速上手用户手册,采用联发科MT7988芯片设计

介绍 Banana Pi BPI-R4 路由器板采用 MediaTek MT7988A (Filogic 880) 四核 ARM Corex-A73 设计&#xff0c;4GB DDR4 RAM&#xff0c;8GB eMMC&#xff0c;板载 128MB SPI-NAND 闪存&#xff0c;还有 2x 10Gbe SFP、4x Gbe 网络端口&#xff0c;带 USB3 .2端口&#xff0c;M.2…

计算机服务器中了halo勒索病毒怎么办,halo勒索病毒解密

在网络技术飞速发展的今天&#xff0c;越来越多的企业依赖数字化办公&#xff0c;为企业的生产生活提供了极大便利&#xff0c;但网络是一把双刃剑&#xff0c;网络安全威胁无处不在。近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机服务器中了ha…

【Java】实现图书管理系统

文章目录 1. 设计背景2. 需求分析3. 设计思路4. 实现4.1 book包4.1.1 Book类4.1.2 BookList类(书架) 4.2 user包4.2.1 User 类4.2.2 AdminUser类&#xff08;管理员用户&#xff09;4.2.3 NormalUser类&#xff08;普通用户&#xff09; 4.3 operation包4.3.1 IOPeration接口4.…

Maven基本使用

Maven简介: Apache Maven 是一个项目管理和构建工具&#xff0c;它基于项目模型(POM)的概念&#xff0c;通过一小段描述信息来管理项目的构建&#xff0c;报告和文档 Maven的作用: (1&#xff09;项目搭建&#xff1b; &#xff08;2&#xff09;依赖管理&#xff1b; &#xf…

Mac Monitor:一款为macOS安全研究量身定制的高级独立系统监控工具

关于Mac Monitor Mac Monitor是一款功能强大的高级独立系统安全监控工具&#xff0c;该工具专为macOS安全研究、恶意软件分类和系统故障排除而设计&#xff0c;主要基于Apple Endpoint Security&#xff08;ES&#xff09;实现其功能。 Mac Monitor能够收集各种类型的系统事件…

ASP.NET Core 过滤器 使用依赖项注入

过滤器是 ASP.NET Core 中的特殊组件&#xff0c;允许我们在请求管道的特定阶段控制请求的执行。这些过滤器在中间件执行后以及 MVC 中间件匹配路由并调用特定操作时发挥作用。 简而言之&#xff0c;过滤器提供了一种在操作级别自定义应用程序行为的方法。它们就像检查点&#…

CCF CSP 202312-2因子化简

题目描述 样例 输入 3 2155895064 3 2 2 10000000000 10 输出 2238728 1 10000000000 基本思路 首先&#xff0c;要找出构成n的所有素因子&#xff0c;这些因子满足两个条件&#xff1a;是素数&#xff08;函数判断&#xff09;&#xff0c;且能被n或n的中间值整除&#xf…

【RT-DETR有效改进】CARAFE提高精度的上采样方法(助力细节长点)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文给大家带来的CARAFE(Content-Aware ReAssembly of FEatures)是一种用于增强卷积神经网络特征图的上采样方法。其主要旨在改进传统的上采样方法(就是我们的Upsample)的性能。CARAFE的核心思想是:使用输…

ONLYOFFICE:兼顾协作与安全的开源办公套件

文章目录 前言ONLYOFFICE是什么&#xff1f;ONLYOFFICE的特点多人在线协同灵活集成安全可靠跨平台和设备扩展丰富 实操注册登录编写文档插件安装智谱CopilotDraw.io 新版强势功能显示协作者头像插件 UI 界面更新 总结 前言 随着数字化时代的到来&#xff0c;越来越多的文档处理…