UGUI中使用代码动态绑定触发事件
2017-05-10 14:29
519 查看
前言:UGUI系统中官方提供了一种Button控件,Button封装了官方提供的一套OnClick事件,如果该GameObject还需要支持按下,移入,移出等事件呢?这时候我们就需要添加EventTrigger组件。如果我们要给一个文本或是一张图片,添加鼠标响应事件,通过EventTrigger组件就变得易如反掌。今天我们实现的是动态添加EventTrigger组件并且动态添加触发事件。
运行前:
运行后:
直接贴出代码,因为注释写的很详细
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.Events;
public class newtest : MonoBehaviour {
// Use this for initialization
void Start ()
{
var trigger = transform.gameObject.GetComponent<EventTrigger>();
if (trigger == null)
trigger = transform.gameObject.AddComponent<EventTrigger>();
// 实例化delegates(trigger.trigger是注册在EventTrigger组件上的所有功能)
trigger.triggers = new List<EventTrigger.Entry>();
// 在EventSystem委托列表中进行登记
EventTrigger.Entry entry = new EventTrigger.Entry();
// 设置 事件类型
entry.eventID = EventTriggerType.PointerClick;
// 实例化回调函数
entry.callback = new EventTrigger.TriggerEvent();
//UnityAction 本质上是delegate,且有数个泛型版本(参数最多是四个),一个UnityAction可以添加多个函数(多播委托)
UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnScriptControll);
//将方法绑定在回调上(给回调方法添加监听)
entry.callback.AddListener(callback);
// 添加事件触发记录到GameObject的事件触发组件
trigger.triggers.Add(entry);
}
public void OnScriptControll(BaseEventData arg0)
{
Debug.Log("Test Click");
}
}
运行前:
运行后:
直接贴出代码,因为注释写的很详细
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.Events;
public class newtest : MonoBehaviour {
// Use this for initialization
void Start ()
{
var trigger = transform.gameObject.GetComponent<EventTrigger>();
if (trigger == null)
trigger = transform.gameObject.AddComponent<EventTrigger>();
// 实例化delegates(trigger.trigger是注册在EventTrigger组件上的所有功能)
trigger.triggers = new List<EventTrigger.Entry>();
// 在EventSystem委托列表中进行登记
EventTrigger.Entry entry = new EventTrigger.Entry();
// 设置 事件类型
entry.eventID = EventTriggerType.PointerClick;
// 实例化回调函数
entry.callback = new EventTrigger.TriggerEvent();
//UnityAction 本质上是delegate,且有数个泛型版本(参数最多是四个),一个UnityAction可以添加多个函数(多播委托)
UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnScriptControll);
//将方法绑定在回调上(给回调方法添加监听)
entry.callback.AddListener(callback);
// 添加事件触发记录到GameObject的事件触发组件
trigger.triggers.Add(entry);
}
public void OnScriptControll(BaseEventData arg0)
{
Debug.Log("Test Click");
}
}
相关文章推荐
- UGUI中使用代码动态绑定触发事件
- 使用jquery动态生成的标签,需要在代码当中绑定才可以实现事件的监听
- uGUI使用代码动态添加Button.OnClick()事件
- uGUI使用代码动态添加Button.OnClick()事件(Unity3D开发之十二)
- uGUI使用代码动态添加Button.OnClick()事件(Unity3D开发之十二)
- uGUI使用代码动态添加Button.OnClick()事件
- ugui使用代码动态添加Button.OnClick()事件
- GridView 动态绑定控件 OnRowCommand事件触发
- JQuery的自定义事件代码,触发,绑定简单实例
- jQuery动态添加的元素绑定事件处理函数代码
- 牛腩购物 8 整合用户留言 动软生成器 ,.NET在后置代码中输入JS提示语句(背景不会变白),repeater 循环的时候事件判断,repeater 隔行 奇数行,item列,隐藏区块 Panel 的使用,前台绑定代码的时候使用函数
- DataList嵌套DataList(页面绑定后台代码使用ItemDataBound事件实现 纯代码)
- javascript 动态改变onclick事件触发函数代码
- jquery快捷动态绑定键盘事件的操作函数代码
- jquery移除、绑定、触发元素事件使用示例详解
- linux下 USB动态监测 hotplug事件监测 开源给网友,使用及修改请给作者留一份新的代码,互相提高
- DataList嵌套DataList(页面绑定后台代码使用ItemDataBound事件实现 纯代码)
- 使用jquery动态创建的东西绑定事件没反应
- ComboBox使用BindingSource做数据源,更改数据源及绑定项时是否会触发SelectedIndexChanged事件?
- js 兼容性之代码触发绑定的事件