光谷做网站推广电话,湖南住建云,凡科网站是什么做的,六安市城乡和建设局官方网站目录
前言
一、关于slider的监听事件
二、方案一 #xff08;无脚本版#xff09;
三、方案二 #xff08;继承slider脚本进行拓展#xff09;
四、方案三#xff08;外部脚本添加#xff09; 前言
前一段时间在使用这个功能#xff0c;发现搜索出来的文章和脚本无脚本版
三、方案二 继承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.GetComponentEventTrigger();//首先需要初始化一个类这个类里面你需要指定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(){}}