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

Unity 滑动条(Slider)拖拽开始和结束、点击等事件的拓展功能

目录

前言

一、关于slider的监听事件

二、方案一 (无脚本版)

三、方案二 (继承slider脚本进行拓展)

四、方案三(外部脚本添加)


前言

前一段时间在使用这个功能,发现搜索出来的文章和脚本,讲的都不是很详细,这里做一些补充。

注意看目录,一共是三种方案,都可以使用,使用一种就可以了!!!!

一、关于slider的监听事件

如图1所示,unity自带的slider组件只有当数值变动时的事件,但我们有时候还需要按下的事件,抬起的事件等。

图1 slider组件

二、方案一 (无脚本版)

拖拽等事件是EventTrigger,这个在slider下也同样适用,所以直接添加组件EventTrigger(如图2所示)。

图2 eventTrigger

后面的步骤可以和按钮一样使用,可跳转链接。

 unity | EventTrigger(实现鼠标/按钮按下、抬起等时执行的方法)-CSDN博客

三、方案二 (继承slider脚本进行拓展)

up觉得这个方案还是挺麻烦的,不建议使用。还不如上一条。

新建一个脚本叫随便起个名字,例newSlider,然后继承自Slider。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class NewSlider : Slider
{}

随便新建一个物体,把这个脚本挂上去,你会发现,两个一模一样,只不过新的没有数据。(如图3所示)

图3 NewSlider

我们把之前slider的数据一个一个抄到这个上面。(如图4所示)

图4 抄数据

最后把新的组件粘贴回原来的slider。(如图5所示)

图5 把newSlider放回去

 接下来在之前新建的脚本里添加方法。

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;public class NewSlider : Slider
{//这里用的是接口,没有继承的原因是Slider里面继承过了,这里只需要使用就可以//按下时方法public override void OnPointerDown(PointerEventData eventData){Debug.Log("我按下了");}//抬起时方法public override void OnPointerUp(PointerEventData eventData){Debug.Log("我抬起了");}
}

 想了解具体原理请参考
Unity | 接口的理解和使用方法_unity 接口-CSDN博客

成品如图6所示。

图6 成品

四、方案三(外部脚本添加)

还是要在slider上面加组件EventTrigger,如图2所示,这里不第二次贴图了。

每一条的解析,我都写在下面了。(解析快比代码多了~给个赞吧,小女子这厢有礼了~)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;public class SliderEvent : MonoBehaviour
{//公开一个slider,到时候把这个拖进来public Slider slider;void Start(){//获取一下slider上面EventTrigger组件EventTrigger eventTrigger = slider.GetComponent<EventTrigger>();//首先,需要初始化一个类,这个类里面你需要指定:1.你要添加哪种事件 2.事件发生时,你要执行什么方法EventTrigger.Entry entry = new EventTrigger.Entry();//这里先添加,当按下时的事件entry.eventID = EventTriggerType.PointerDown;//这里添加按下时执行什么方法entry.callback.AddListener((data)=>Way0());//我事件也设置完了,事件发生时执行的方法也设置完了,我要把这个类加到eventTrigger里的类列表里eventTrigger.triggers.Add(entry);//如果想再加一个抬起事件,把这个类重新初始化一下entry = new EventTrigger.Entry();//这里先添加,当抬起时的事件entry.eventID = EventTriggerType.PointerUp;//这里添加按下时执行什么方法entry.callback.AddListener((data) => Way1());//我事件也设置完了,事件发生时执行的方法也设置完了,我要把这个类加到eventTrigger里的类列表里eventTrigger.triggers.Add(entry);}//这里是一个方法void Way0(){ }//这里是方法2void Way1(){}}

相关文章:

Unity 滑动条(Slider)拖拽开始和结束、点击等事件的拓展功能

目录 前言 一、关于slider的监听事件 二、方案一 &#xff08;无脚本版&#xff09; 三、方案二 &#xff08;继承slider脚本进行拓展&#xff09; 四、方案三&#xff08;外部脚本添加&#xff09; 前言 前一段时间在使用这个功能&#xff0c;发现搜索出来的文章和脚本&…...

Linux 学习知识 (简单易懂 )持续更新 Linux输出重定向 Linux通配符 Linux正则表达式 持续更新....

一.输出重定向 标准输出&#xff1a;是将信息输出在终端 标准错误输出&#xff1a;在执行命令的过程中所产生错误信息也是输出在终端标准输入&#xff1a;从键盘输入 1.1标准输出重定向 作用&#xff1a;将本来要显示在终端上的信息重定向到一个文件中 实现方法&#xff1a…...

前端vue用el-table如何实现表头内容过长换行处理,实现换行效果

前端vue用el-table如何实现表头内容过长换行处理&#xff0c;实现换行效果 这是效果图 有两种方法&#xff0c;一种简易版本&#xff0c;一种万能方法,都是el-table&#xff0c;先看文档 表头标题是可以自定义的 方法一 label的解释写在代码里面了&#xff0c;这里会自动形成换…...

15:00面试,15:08出来,面试问的有点变态。。。。

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天…...

【BUG】流式响应requests得到: ping - 和时间戳

前情提要 运行Langchain-Chatchat项目&#xff0c;使用自定义请求访问API Server流式输出 报错展示 b: ping - 2024-05-22 00:46:04.83252000:00\r\n\r\n报错原因 这通常是由于 Server-Sent Events (SSE) 实现中使用的“心跳”机制&#xff0c;以确保连接保持活跃。一些 SSE…...

人工智能应用-实验5-BP 神经网络分类手写数据集

文章目录 &#x1f9e1;&#x1f9e1;实验内容&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;代码&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;分析结果&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;实验总结&#x1f9e1;&#x1f9e1; &#x1f9…...

K8s Pod 资源进阶

文章目录 K8s Pod 资源进阶pod 资源限制限制资源单位 资源限制实战Pod 服务质量QosDownward API可注入的元数据信息环境变量方式注入元数据存储卷方式注入元数据为注册服务注入Pod 名称为 JVM 注入堆内存限制 K8s Pod 资源进阶 pod 资源限制 资源限制的方法&#xff1a; Req…...

掌握Edge浏览器的使用技巧

导言&#xff1a; Edge浏览器是微软推出的一款现代化、高效的网络浏览器。它不仅提供了基本的浏览功能&#xff0c;还具备了许多强大的特性和技巧&#xff0c;可以帮助用户更好地利用浏览器进行工作和娱乐。本文将介绍一些Edge浏览器的使用技巧&#xff0c;帮助读者更好地掌握这…...

Qt封装ping命令并将ping结果显示到界面

实现界面及在Windows 10下的运行结果如下&#xff1a; 代码如下&#xff1a; pingNetWork.h // 检测网络是否ping通的工具#ifndef PINGNETWORK_H #define PINGNETWORK_H#include <QWidget> #include"control_global.h" namespace Ui { class CPingNetWork; }c…...

图论(洛谷刷题)

目录 前言&#xff1a; 题单&#xff1a; P3386 【模板】二分图最大匹配 P1525 [NOIP2010 提高组] 关押罪犯 P3385 【模板】负环 P3371 【模板】单源最短路径&#xff08;弱化版&#xff09; SPFA写法 Dij写法&#xff1a; P3385 【模板】负环 P5960 【模板】差分约束…...

安卓部署ffmpeg全平台so并实现命令行调用

安卓 FFmpeg系列 第一章 Ubuntu生成ffmpeg安卓全平台so 第二章 Windows生成ffmpeg安卓全平台so 第三章 生成支持x264的ffmpeg安卓全平台so 第四章 部署ffmpeg安卓全平台so并使用&#xff08;本章&#xff09; 文章目录 安卓 FFmpeg系列前言一、添加so1、拷贝ffmpeg到项目2、bu…...

Go语言中MD5盐值加密解决用户密码问题

1. 用户密码存储的挑战 在Web应用开发中&#xff0c;用户密码的安全存储是一个核心问题。明文存储用户密码是极其危险的&#xff0c;因为一旦数据库被泄露&#xff0c;攻击者就可以直接获取用户的密码。为了保护用户密码&#xff0c;我们需要采取加密措施。 2. MD5算法简介 …...

flutter开发实战-本地SQLite数据存储

flutter开发实战-本地SQLite数据库存储 正在编写一个需要持久化且查询大量本地设备数据的 app&#xff0c;可考虑采用数据库。相比于其他本地持久化方案来说&#xff0c;数据库能够提供更为迅速的插入、更新、查询功能。这里需要用到sqflite package 来使用 SQLite 数据库 预…...

【路由組件】

完成Vue Router 安装后&#xff0c;就可以使用路由了&#xff0c;路由的基本使用步骤&#xff0c;首先定义路由组件&#xff0c;以便使用Vue Router控制路由组件展示与 切换&#xff0c;接着定义路由链接和路由视图&#xff0c;以便告知路由组件渲染到哪个位置&#xff0c;然后…...

【C++风云录】数字逻辑设计优化:电子设计自动化与集成电路

集成电路设计&#xff1a;打开知识的大门 前言 本文将详细介绍关于数字芯片设计&#xff0c;电子设计格式解析&#xff0c;集成电路设计工具&#xff0c;硬件描述语言分析&#xff0c;电路验证以及电路优化六个主题的深入研究与实践。每一部分都包含了主题的概述&#xff0c;…...

Flask Response 对象

文章目录 创建 Response 对象设置响应内容设置响应状态码设置响应头完整的示例拓展设置响应的 cookie重定向响应发送文件作为响应 总结 Flask 是一个 Python Web 框架&#xff0c;用于快速开发 Web 应用程序。在 Flask 中&#xff0c;我们使用 Response 对象来构建 HTTP 响应。…...

算法001:移动零

力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/move-zeroes/ 使用 双指针 来解题&#xff1a; 此处的双指针&#xff0c;…...

基于springboot+vue+Mysql的网上书城管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…...

python实现绘制烟花代码

在Python中&#xff0c;我们可以使用多个库来绘制烟花效果&#xff0c;例如turtle库用于简单的绘图&#xff0c;或者更复杂的库如pygame或matplotlib结合动画。但是&#xff0c;由于turtle库是Python自带的&#xff0c;我们可以使用它来绘制一个简单的烟花效果。 下面是一个使…...

Python小白的机器学习入门指南

Python小白的机器学习入门指南 大家好&#xff01;今天我们来聊一聊如何使用Python进行机器学习。本文将为大家介绍一些基本的Python命令&#xff0c;并结合一个简单的数据集进行实例讲解&#xff0c;希望能帮助你快速入门机器学习。 数据集介绍 我们将使用一个简单的鸢尾花数…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...

云原生安全实战:API网关Envoy的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口&#xff0c;负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...

npm安装electron下载太慢,导致报错

npm安装electron下载太慢&#xff0c;导致报错 背景 想学习electron框架做个桌面应用&#xff0c;卡在了安装依赖&#xff08;无语了&#xff09;。。。一开始以为node版本或者npm版本太低问题&#xff0c;调整版本后还是报错。偶尔执行install命令后&#xff0c;可以开始下载…...