UGUI的鼠标事件

UGUI的鼠标事件,第1张

UGUI的鼠标事件:EventTrigger

自己写一个帮助类,便于调用(用回调,对相应鼠标事件添加事件,方便书写)

using System.Collections

using System.Collections.Generic

using UnityEngine

using UnityEngine.EventSystems

/// <summary>

/// 鼠标事件监听

/// </summary>

public class UIEventListener :  EventTrigger

{

    public delegate void PointerEventDelegate(PointerEventData eventData)

    public PointerEventDelegate PointerEnterEvent

    public PointerEventDelegate PointerExitEvent

    public PointerEventDelegate PointerClickEvent

    public PointerEventDelegate PointerDownEvent

    public PointerEventDelegate PointerUpEvent

    public PointerEventDelegate BeginDragEvent

    public PointerEventDelegate OnDragEvent

    public PointerEventDelegate EndDragEvent

    public static UIEventListener GetEventListener(GameObject item)

    {

        UIEventListener uIEvent = null

        if (item != null)

        {

            uIEvent = item.AddComponent<UIEventListener>()

        }

        return uIEvent

    }

    /// <summary>

    /// 鼠标划入

    /// </summary>

    /// <param name="eventData"></param>

    public override void OnPointerEnter(PointerEventData eventData)

    {

        base.OnPointerEnter(eventData)

        PointerEnterEvent?.Invoke(eventData)

    }

    /// <summary>

    /// 鼠标移出

    /// </summary>

    /// <param name="eventData"></param>

    public override void OnPointerExit(PointerEventData eventData)

    {

        base.OnPointerExit(eventData)

        PointerExitEvent?.Invoke(eventData)

    }

    /// <summary>

    /// 鼠标点击

    /// </summary>

    /// <param name="eventData"></param>

    public override void OnPointerClick(PointerEventData eventData)

    {

        base.OnPointerClick(eventData)

        PointerClickEvent?.Invoke(eventData)

    }

    /// <summary>

    /// 鼠标抬起

    /// </summary>

    /// <param name="eventData"></param>

    public override void OnPointerDown(PointerEventData eventData)

    {

        base.OnPointerDown(eventData)

        PointerDownEvent?.Invoke(eventData)

    }

    /// <summary>

    /// 鼠标抬起

    /// </summary>

    /// <param name="eventData"></param>

    public override void OnPointerUp(PointerEventData eventData)

    {

        base.OnPointerUp(eventData)

        PointerUpEvent?.Invoke(eventData)

    }

    /// <summary>

    /// 开始拖拽

    /// </summary>

    /// <param name="eventData"></param>

    public override void OnBeginDrag(PointerEventData eventData)

    {

        base.OnBeginDrag(eventData)

        BeginDragEvent?.Invoke(eventData)

    }

    /// <summary>

    /// 拖拽中

    /// </summary>

    /// <param name="eventData"></param>

    public override void OnDrag(PointerEventData eventData)

    {

        base.OnDrag(eventData)

        OnDragEvent?.Invoke(eventData)

    }

    /// <summary>

    /// 拖拽结束

    /// </summary>

    /// <param name="eventData"></param>

    public override void OnEndDrag(PointerEventData eventData)

    {

        base.OnEndDrag(eventData)

        EndDragEvent?.Invoke(eventData)

    }

}

今天永强接着昨天的课程 再接着给玉田讲一个新东西,名字非常酷炫,叫《EventTrigger》他的名字啥意思玉田并不需要知道,可以粗暴的这样理解哈。给你举个简单的例子:就好比玉田干坏错事了,玉田的爹地赵四抬手就给玉田一个大嘴巴子,玉田被抽一巴掌后,就捂住脸。

这里的EventTrigger就是:赵四抬手抽玉田一大嘴巴子。

执行的Function就是:玉田捂脸。。。

好嘞!下面我们看看详细 *** 作:

这是我们上一节课的栗子。现在选中Hierarchy中的Image对象

然后在Inspector中选择最下端的AddComponent按钮!按他就对啦!

然后会蹦出来一个小框框,上面有个搜索栏。像你平时搜索“苍老师”一样,在搜索栏中输入“EventTrigger”,然后就显示EventTrigger组件

选中我用红框框起来的这个吊东西。

这时你的Inspector中会多了一个东西,如下图

没错,揍四他!

摁“Add New Event Type”按钮。

选择PointerEnter

点右下角的➕号,出现下图的样子

把Hierarchy中的Image拖到对相框里

然后按我下图的设置做。玉田你蹩BB,就按我说的做就对了!

这个意思是当画布渲染时,如果有PointerEnter事件时,Image的Alpha设置为0.5

下面我们再添加一个事件。当PointerExit事件发生时。Image的Alpha设置为1

好滴。玉田真棒!现在运行一下看看效果吧。嘤嘤嘤。。。

当鼠标悬停在图片上时,Image透明度变成0.5

当鼠标离开图片时,Image的透明度变成了1

好啦玉田,哥累了。你该回家吃饭了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11340834.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存