UGUI中使用代码动态绑定触发事件

来源:互联网 发布:ps淘宝美工 编辑:程序博客网 时间:2024/06/06 14:26

         前言:UGUI系统中官方提供了一种Button控件,Button封装了官方提供的一套OnClick事件,如果该GameObject还需要支持按下,移入,移出等事件呢?这时候我们就需要添加EventTrigger组件。如果我们要给一个文本或是一张图片,添加鼠标响应事件,通过EventTrigger组件就变得易如反掌。今天我们实现的是动态添加EventTrigger组件并且动态添加触发事件。


运行前:

运行后:

直接贴出代码,因为注释写的很详细

[csharp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. using System.Collections;  
  2. using System.Collections.Generic;  
  3. using UnityEngine;  
  4. using UnityEngine.UI;  
  5. using UnityEngine.EventSystems;  
  6. using UnityEngine.Events;  
  7.   
  8.   
  9. public class newtest : MonoBehaviour {  
  10.     // Use this for initialization  
  11.     void Start ()  
  12.      {  
  13.              var trigger = transform.gameObject.GetComponent<EventTrigger>();  
  14.                  if (trigger == null)  
  15.                          trigger = transform.gameObject.AddComponent<EventTrigger>();  
  16.           
  17.         // 实例化delegates(trigger.trigger是注册在EventTrigger组件上的所有功能)  
  18.         trigger.triggers = new List<EventTrigger.Entry>();  
  19.        
  20.                  // 在EventSystem委托列表中进行登记  
  21.              EventTrigger.Entry entry = new EventTrigger.Entry();  
  22.                  // 设置 事件类型  
  23.                  entry.eventID = EventTriggerType.PointerClick;  
  24.              // 实例化回调函数  
  25.                  entry.callback = new EventTrigger.TriggerEvent();  
  26.         //UnityAction 本质上是delegate,且有数个泛型版本(参数最多是四个),一个UnityAction可以添加多个函数(多播委托)  
  27.              UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnScriptControll);  
  28.         //将方法绑定在回调上(给回调方法添加监听)  
  29.                  entry.callback.AddListener(callback);  
  30.                  // 添加事件触发记录到GameObject的事件触发组件  
  31.         trigger.triggers.Add(entry);  
  32.          }  
  33.           
  34.      
  35.        public void OnScriptControll(BaseEventData arg0)  
  36.        {  
  37.                  Debug.Log("Test Click");  
  38.            }  
  39.   
  40.      }  
阅读全文
0 0
原创粉丝点击