Unity3D之UI按键绑定事件(六)
来源:互联网 发布:excel中vba编程 编辑:程序博客网 时间:2024/06/06 15:02
六、通过unity系统自带接口和观察者模式绑定按键事件
UI(UGUI)如何判断UI元素被点击时是鼠标哪个按键,(五)中我们可以根据eventData.pointerId来监听是我们按下的是鼠标左键还是右键。
通过前面几部分学习我们已经实现对UI系统如何绑定事件做了大概讲解,但是弊端明显,就是每个UI元素都创建一个MonoBehavior来进行监听各个事件,显然这样做不行,下面我们来学习下利用Delegate和Event来做一个通用类UIEventListener来处理事件(不了解Delegate和Event的童鞋请自行谷歌搜索观察者模式;
第一步上代码;
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);
}
}
第二步:通过Hierarchy面板创建button
第三步:创建一个名为EventHandler的脚本,代码如下
public class EventHandler: MonoBehaviour {
void Start () {
Button btn = this.GetComponent<Button>();
UIEventListener btnListener = btn.gameObject.AddComponent<UIEventListener>();
btnListener.OnClick += delegate (GameObject gb)
{
Debug.Log(gb.name + "OnClick");
};
btnListener.OnMouseEnter += delegate (GameObject gb)
{
Debug.Log(gb.name + "OnMouseEnter");
};
btnListener.OnMouseExit += delegate (GameObject gb)
{
Debug.Log(gb.name+ "OnMouseExit");
};
}//Start ()_end
第四步,绑定EventHandler脚本到Button上
然后运行点击按钮就能看到运行的结果了。
七、常用案例
- Unity3D之UI按键绑定事件(六)
- Unity3D之UI按键绑定事件(一)
- Unity3D之UI按键绑定事件(二)
- Unity3D之UI按键绑定事件(三)
- Unity3D之UI按键绑定事件(四)
- Unity3D之UI按键绑定事件(五)
- Unity3D之UI按键绑定事件案例(七)
- Unity3D之组合按键
- div实现绑定按键事件
- Unity3D之将UI的点击事件渗透下去
- Unity3D研究院之将UI的点击事件渗透下去
- WPF之按键事件
- unity3d手柄按键事件回调
- unity3d之ui实践
- Unity3D之UI设计
- Android:开源框架xutils介绍之 ViewUtils(注解实现UI绑定和事件绑定)
- Jquery给HTML元素绑定按键事件-回车事件
- Jquery给HTML元素绑定按键事件-回车事件
- add-apt-repository问题
- 1.1 数据结构
- R语言编程:阿里推笔试题之一
- 第二天总结
- java中的抽象类
- Unity3D之UI按键绑定事件(六)
- C++开源项目
- 神经网络与深度学习 1.5 使用梯度下降算法进行学习
- 排版的一点小注意
- 对象和类的关系
- 正则表达式30分钟入门教程
- js中选择结构和循环结构
- nyij 6 喷水装置(一)【贪心算法】
- Leetcode 647. Palindromic Substrings 回文子串 解题报告