Unity自身的Button组件的点击事件是无参数的OnClick()。更多要求是没办法达成的。
所以自己通过几行的代码。添加更多的点击状态。
想要更多丰富的功能的话。只要在对应的方法里面添加即可。
1. 比较简单了,是个基本的父类。就几段,所以老规矩上脚本吧。
public abstract class UIEventManagers : MonoBehaviour ,IPointerClickHandler,IPointerDownHandler,IPointerEnterHandler,IPointerExitHandler,IPointerUpHandler{
public UnityEvent onPointerDown;
public UnityEvent onPointerUp;
public UnityEvent onPointerEnter;
public UnityEvent onPointerClick;
public UnityEvent onPointerExit;
/// <summary>
/// 鼠标点击
/// </summary>
/// <param name="eventData"></param>
protected virtual void OnPointerClick(PointerEventData eventData)
{
onPointerClick.Invoke();
}
/// <summary>
/// 鼠标退出
/// </summary>
/// <param name="eventData"></param>
protected virtual void OnPointerExit(PointerEventData eventData)
{
onPointerExit.Invoke();
}
/// <summary>
/// 鼠标进入
/// </summary>
/// <param name="eventData"></param>
protected virtual void OnPointerEnter(PointerEventData eventData)
{
onPointerEnter.Invoke();
}
/// <summary>
/// 鼠标按下
/// </summary>
/// <param name="eventData"></param>
protected virtual void OnPointerUp(PointerEventData eventData)
{
onPointerUp.Invoke();
}
/// <summary>
/// 鼠标抬起
/// </summary>
/// <param name="eventData"></param>
protected virtual void OnPointerDown(PointerEventData eventData)
{
onPointerDown.Invoke();
}
# region .
void IPointerClickHandler.OnPointerClick(PointerEventData eventData)
{
OnPointerClick(eventData);
}
void IPointerDownHandler.OnPointerDown(PointerEventData eventData)
{
OnPointerDown(eventData);
}
void IPointerEnterHandler.OnPointerEnter(PointerEventData eventData)
{
OnPointerEnter(eventData);
}
void IPointerExitHandler.OnPointerExit(PointerEventData eventData)
{
OnPointerExit(eventData);
}
void IPointerUpHandler.OnPointerUp(PointerEventData eventData)
{
OnPointerUp(eventData);
}
#endregion .
}
继承这个类,然后书写更多的功能吧。然后脚本绑定在一个UI上面就可以了。
我是李本心明
首先谢谢大家的支持,其次如果你碰到什么其他问题的话,欢迎来 我自己的一个 讨论群559666429
来(扫扫下面二维码或者点击群链接 Unity3D[ 交流] ),大家一起找答案,共同进步。
由于工作生活太忙了,对于大家的帮助时间已经没有之前那么充裕了。如果有志同道合的朋友,可以接受无偿的帮助别人,可以加我QQ单独联系我,一块经营一下。