U3D添加按钮相应事件

Unity UI按钮绑定事件


第一步:通过Hierarchy面板创建button,如图

第二步:创建一个脚本名为TestClick,并定义一个名为Click的public方法

using UnityEngine;
using System.Collections;
 
public class TestClick : MonoBehaviour {
 
public void Click()
{
Debug.Log("Button Clicked");
}
}

第三步:选中Button ,Add Component选择TestClick

第四步:关联TestClick中的Click方法,如果

然后运行,我们就能看到绑定的事件了

总结一下:需要script的object,这些script就只管控制这些变化,成为一个个方法,用C#的代码来实现。如果调用的话,是需要的按钮,或者控件上面的OnClick事件上面绑定好就行了,一个是绑定object,另外一个是选择执行的函数方法什么的。

虽然已经已经实现对Unity UI新的UI系统如何绑定事件做了大概讲解,但是弊端明显,就是每个UI元素都创建一个MonoBehavior来进行监听各个事件,显然这样做不行,下面我们来学习下利用Delegate和Event来做一个通用类UIEventListener来处理事件(不了解Delegate和Event的童鞋请自行谷歌搜索观察者模式)

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class UIEventListener : MonoBehaviour, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler
{
 
/// <summary>
/// 定义事件代理
/// </summary>
/// <param name="gb"></param>
public delegate void UIEventProxy(GameObject gb);
 
/// <summary>
/// 鼠标点击事件
/// </summary>
public event UIEventProxy OnClick;
 
/// <summary>
/// 鼠标进入事件
/// </summary>
public event UIEventProxy OnMouseEnter;
 
/// <summary>
/// 鼠标滑出事件
/// </summary>
public event UIEventProxy OnMouseExit;
 
public void OnPointerClick(PointerEventData eventData)
{
if (OnClick != null)
OnClick(this.gameObject);
}
 
public void OnPointerEnter(PointerEventData eventData)
{
if (OnMouseEnter != null)
OnMouseEnter(this.gameObject);
}
 
public void OnPointerExit(PointerEventData eventData)
{
if (OnMouseExit != null)
OnMouseExit(this.gameObject);
}
}

调用部分代码

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
 
public class Test : MonoBehaviour
{
 
// Use this for initialization
void Start()
{
Button btn = this.GetComponent<Button>();
UIEventListener btnListener = btn.gameObject.AddComponent<UIEventListener>();
btnListener.OnClick += delegate(GameObject gb)
{
Debug.Log(gb.name);
};
btnListener.OnMouseEnter += delegate(GameObject gb)
{
Debug.Log(gb.name);
};
btnListener.OnMouseExit += delegate(GameObject gb)
{
Debug.Log(gb.name);
};
}
}




  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值