做网站绿色和什么颜色搭配关于市场营销的培训课程
目录
前言
一、关于slider的监听事件
二、方案一 (无脚本版)
三、方案二 (继承slider脚本进行拓展)
四、方案三(外部脚本添加)
前言
前一段时间在使用这个功能,发现搜索出来的文章和脚本,讲的都不是很详细,这里做一些补充。
注意看目录,一共是三种方案,都可以使用,使用一种就可以了!!!!
一、关于slider的监听事件
如图1所示,unity自带的slider组件只有当数值变动时的事件,但我们有时候还需要按下的事件,抬起的事件等。

二、方案一 (无脚本版)
拖拽等事件是EventTrigger,这个在slider下也同样适用,所以直接添加组件EventTrigger(如图2所示)。

后面的步骤可以和按钮一样使用,可跳转链接。
unity | EventTrigger(实现鼠标/按钮按下、抬起等时执行的方法)-CSDN博客
三、方案二 (继承slider脚本进行拓展)
up觉得这个方案还是挺麻烦的,不建议使用。还不如上一条。
新建一个脚本叫随便起个名字,例newSlider,然后继承自Slider。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class NewSlider : Slider
{}
随便新建一个物体,把这个脚本挂上去,你会发现,两个一模一样,只不过新的没有数据。(如图3所示)

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

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

接下来在之前新建的脚本里添加方法。
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所示。

四、方案三(外部脚本添加)
还是要在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(){}}