Unity进阶课程【三】EventTrigger 组件的使用 - 事件触发器的应用

Unity组件讲解 EventTrigger


今天咱们继续进阶课程,环境虽难,依旧坚持,以后会养成习惯,定期更新,希望小伙伴们监督,有想学习的不懂的地方也可以告诉我,咱可以专门出一期细讲,咱是个爱学习的好孩纸~。


提示:内容纯个人编写,欢迎评论点赞,来指正我。


前言

本篇内容主要讲Unity组件之 EventTrigger 简单用法和遇到的一些坑,以及一些平常不注意到的功能。

下面让我们出发吧 ------------>----------------->


一、EventTrigger 是什么?

  • 在Unity中,EventTrigger组件是一种用于处理输入事件的组件。通过添加EventTrigger组件,开发者可以在游戏对象上设置各种事件监听,例如 鼠标点击、鼠标悬停、键盘输入 等。可以在EventTrigger组件上设置不同的事件类型并指定对应的处理函数,当事件发生时,处理函数会被调用。这样可以实现交互功能,例如按钮点击、鼠标悬停效果、拖拽等。通过EventTrigger组件,开发者可以方便地添加交互功能而不需要编写大量的代码。

二、EventTrigger 基础功能介绍

1.组件添加

在这里插入图片描述

  • 新建一个Button在Add Component 上搜索EventTrigger添加该组件。

2.参数

  • EventTrigger
    包含多个事件触发器的列表。每个事件触发器包含一个事件类型和对应的事件处理器。
  • Add New Type
    添加新的事件触发器,可以选择事件类型并绑定相应的事件处理器。事件类型可以是PointerEnter、PointerExit、PointerDown、PointerUp、Click等不同的事件类型。
  • Event ID
    事件处理器的唯一标识符。可以通过代码中指定这个ID来触发事件处理器。
  • Entry
    进入事件触发器的条件设置,比如可以指定鼠标指针进入时触发事件。
  • Exit
    离开事件触发器的条件设置,比如可以指定鼠标指针离开时触发事件。
  • Press
    按压事件触发器的条件设置,比如可以指定按钮被按下时触发事件。
  • Release
    释放事件触发器的条件设置,比如可以指定按钮被释放时触发事件。
  • Events
    显示当前事件触发器中已经定义的所有事件处理器,可以查看和编辑每个事件处理器的具体设置。

3.事件类型

在这里插入图片描述

  • PointerEnter
    当鼠标指针进入触发器范围时触发事件
    当需要在鼠标指针进入某个物体范围时执行特定操作时使用
  • PointerExit
    当鼠标指针离开触发器范围时触发事件
    当需要在鼠标指针离开某个物体范围时执行特定操作时使用
  • PointerDown
    当鼠标按下时在触发器范围内时触发事件
    当需要在鼠标按下时在某个物体范围内执行特定操作时使用
  • PointerUp
    当鼠标释放时在触发器范围内时触发事件
    当需要在鼠标释放时在某个物体范围内执行特定操作时使用
  • PointerClick
    当鼠标在触发器范围内点击时触发事件
    当需要捕捉鼠标在某个物体范围内的点击事件并执行特定操作时使用
  • Drag
    当鼠标在触发器范围内拖动时触发事件
    当需要在拖动物体时执行特定操作时使用
  • Drop
    当拖动物体放置在触发器范围内时触发事件
    当需要在拖动物体放置时执行特定操作时使用
  • Scroll
    当鼠标滚轮滚动时在触发器范围内时触发事件
    当需要捕捉鼠标滚轮滚动并执行特定操作时使用
  • UpdateSelected
    当所选对象发生改变时在触发器范围内时触发事件
    当需要在所选对象改变时执行特定操作时使用
  • Select
    当选择对象时在触发器范围内时触发事件
    当需要在选择对象时执行特定操作时使用
  • Deselect
    当取消选择对象时在触发器范围内时触发事件
    当需要在取消选择对象时执行特定操作时使用
  • Move
    当焦点在触发器范围内时且按下方向键时触发事件
    当需要在焦点移动时执行特定操作时使用
  • InitializePotentialDrag
    在拖动操作开始前,当检测到鼠标按下时在触发器范围内时触发事件
    当需要在拖动操作开始前执行特定操作时使用

4.使用方法

① 可视化绑定

在这里插入图片描述

  • 直接在添加组件面板上使用,添加自定义的方法来调用就可以了

② 代码绑定

举例:

    /// <summary>
    /// 要绑定的按钮
    /// </summary>
    [SerializeField] private Button m_InputBotton;
    /// <summary>
    /// 注册按钮事件
    /// </summary>
    private void RegistButtonEvent()
    {
    
    
        if (m_InputBotton == null || m_InputBotton.GetComponent<EventTrigger>())
            return;
        EventTrigger _trigger = m_InputBotton.gameObject.AddComponent<EventTrigger>();
       
        //添加按钮按下的事件
        EventTrigger.Entry _pointDown_entry = new EventTrigger.Entry();
        _pointDown_entry.eventID = EventTriggerType.PointerDown;
        _pointDown_entry.callback = new EventTrigger.TriggerEvent();
       
        //添加按钮松开事件
        EventTrigger.Entry _pointUp_entry = new EventTrigger.Entry();
        _pointUp_entry.eventID = EventTriggerType.PointerUp;
        _pointUp_entry.callback = new EventTrigger.TriggerEvent();
        
        //添加委托事件
        _pointDown_entry.callback.AddListener(delegate {
    
     此处绑定自定义的方法 });
        _pointUp_entry.callback.AddListener(delegate {
    
     此处绑定自定义的方法 });
        _trigger.triggers.Add(_pointDown_entry);
        _trigger.triggers.Add(_pointUp_entry);
    }
  • 这样就可以通过代码绑定事件啦

总结

  • 提示: 很最简单的一个组件哦,大家根据需求来做功能,
    一般用于各种UI的拖拽和按钮的进入离开检测,总之根据需求使用。
  • 大家可以在评论区讨论下一期出什么内容,我可不是娇滴滴的小白~ 咱都会的哦
  • 点赞收藏加关注哦~ 蟹蟹