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

您所在的位置:网站首页 unity滚动字幕怎么用 Unity 滑动条(Slider)拖拽开始和结束、点击等事件的拓展功能

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

2024-07-09 06:08| 来源: 网络整理| 查看: 265

目录

前言

一、关于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(); //首先,需要初始化一个类,这个类里面你需要指定: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() { } //这里是方法2 void Way1() { } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3