Unity EvenTrigerer UI交互组件

Event Trigerer组件介绍

在这里插入图片描述
该组件作用与UI交互,注册行为事件的检测。点击,拖动,滑轮等等行为可以进行注册事件。

方便之处

当我们想给UI组件添加某种行为时,我们会添加相应的组件,比如Button该组件检测点击的行为,如果我们有众多不同的行为呢?一个Image有点击,拖动,鼠标放在上面时,我们要一一进行注册事件,那我们是要进行添加多个组件吗??这样我们会发现会很消耗性能,而且还容易出错,每当添加一个组件时,相应的隐形Bug会随之增加。这时我们就可以用到Event Trigerer组件,用它来进行多个事件的注册进行管理。

事件选择

在这里插入图片描述
各各事件的使用

使用方法

1.拖拽法

写一个脚本,放在一个物体上,将相应的方法放在该组件上。
在这里插入图片描述
该方法和之前的Button组件用法一致。

代码添加

和button组件一样,不用进行拖拽说明那个脚本中的某一个方法,而是通过某一脚本本身直接给组件注册事件。

	private int _index = 0;
    private EventTrigger trigger;
    
    void Start()
    {
        trigger = GetComponent<EventTrigger>();//首先获取Event Trigger组件
        trigger.triggers = new List<EventTrigger.Entry>();//该代码是因为组件Event Trigger组件可以祖册多种事件,所以要用一个集合来管理,所以是triggers 。

        EventTrigger.Entry entry = new EventTrigger.Entry();//生成一个事件进行注册
        entry.eventID = EventTriggerType.PointerClick;//声明改事件是什么类型的时间
        entry.callback.AddListener(bate => ChangColor());//添加函数
        trigger.triggers.Add(entry);//正式添加到集合里面,注册事件成功

    }



    void ChangeColor()//做的改变Image颜色的函数
    {
        if(_index==0)
        {
            GetComponent<Image>().color = Color.red;
        }
        else
        {
            GetComponent<Image>().color = Color.white;
        }

        _index = _index == 0 ? 1 : 0;
    }

在这里插入图片描述

接口法

在脚本中,继承相应的接口,用来实现相应的事件注册。接口的名字就是上面链接里面的事件接口名字。

public class inerfaceevent : MonoBehaviour, IDragHandler,IPointerEnterHandler
{
    public void OnDrag(PointerEventData eventData)//该接口的实现是拖拽Image时,Image的位置会和鼠标在世界坐标的位置一致。
    {
        var rect = GetComponent<RectTransform>();
        Vector3 pos = Vector3.zero;
        RectTransformUtility.ScreenPointToWorldPointInRectangle(rect, eventData.position, eventData.enterEventCamera, out pos);
        rect.transform.position = pos;
    }


    public void OnPointerEnter(PointerEventData eventData)
    {
        Debug.Log("IPointerEnterHandler ");
    }
}

在该脚本中继承IDragHandler,IPointerEnterHandler两个接口,再分别是实现接口,这样可以就注册成功了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值