0


Unity实现UI按钮Button的按下、抬起、移出、移入事件

实现思路,

1、重新写类,继承Button,在类中实现相关的事件响应。

2、将类挂载到Cavas下创建的Button按钮上,挂载之前需先移除Button默认的组件button。

3、编写代码给按钮添加事件,这一步与默认的 onClick.AddListener 用法没什么区别。

个人认为这种方法比较灵活,做个记录,方便使用。

注意事项:

1、在脚本中引用Button按钮时,类型要写自己重写后的类名,而不是原来的Button类型,这里是MyButton,因为在查找到按钮时,GetComponent<>时,尖括号中的类型就是定义的MyButton,这样才能添加对应的事件。

MyButton类的代码如下:

using UnityEngine.EventSystems;
using UnityEngine.UI;
using TMPro;
using UnityEngine.Events;

public class MyButton : Button,IPointerExitHandler,IPointerEnterHandler
{
public UnityEvent onButtonDown;
public UnityEvent onButtonUp;
public UnityEvent onButtonExit;
public UnityEvent onButtonEnter;
// 当按钮被按下时调用
public override void OnPointerDown(PointerEventData eventData)
{
base.OnPointerDown(eventData);
if (onButtonDown != null)
onButtonDown.Invoke();
//gameObject.GetComponentInChildren<TMP_Text>().text = "Pressed";
}

// 当按钮被抬起时调用
 public override void OnPointerUp(PointerEventData eventData)
 {
     base.OnPointerUp(eventData);
     if (onButtonUp != null)
         onButtonUp.Invoke();
     //gameObject.GetComponentInChildren<TMP_Text>().text = "Released";
 }

// 当鼠标从按钮上离开时调用
 public override void OnPointerExit(PointerEventData eventData)
 {
     base.OnPointerExit(eventData);
     if (onButtonExit != null)
         onButtonExit.Invoke();
     //gameObject.GetComponentInChildren<TMP_Text>().text = "Exit";
 }

// 当鼠标从外面进入到按钮上方时调用
 public override void OnPointerEnter(PointerEventData eventData)
 {
     base.OnPointerEnter(eventData);
     if (onButtonEnter != null)
         onButtonEnter.Invoke();
     //gameObject.GetComponentInChildren<TMP_Text>().text = "Enter";
 }

}

使用方法的示例代入如下截图中所示:

标签: unity ui 游戏引擎

本文转载自: https://blog.csdn.net/tianyuhua19890217/article/details/136572796
版权归原作者 qust_tian 所有, 如有侵权,请联系我们删除。

“Unity实现UI按钮Button的按下、抬起、移出、移入事件”的评论:

还没有评论