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

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


运行前:

UGUI中使用代码动态绑定触发事件_第1张图片

运行后:

UGUI中使用代码动态绑定触发事件_第2张图片

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

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();
		         if (trigger == null)
			             trigger = transform.gameObject.AddComponent();
		
		// 实例化delegates(trigger.trigger是注册在EventTrigger组件上的所有功能)
		trigger.triggers = new List();
	 
		         // 在EventSystem委托列表中进行登记
	         EventTrigger.Entry entry = new EventTrigger.Entry();
		         // 设置 事件类型
		         entry.eventID = EventTriggerType.PointerClick;
	         // 实例化回调函数
		         entry.callback = new EventTrigger.TriggerEvent();
		//UnityAction 本质上是delegate,且有数个泛型版本(参数最多是四个),一个UnityAction可以添加多个函数(多播委托)
	         UnityAction callback = new UnityAction(OnScriptControll);
		//将方法绑定在回调上(给回调方法添加监听)
		         entry.callback.AddListener(callback);
		         // 添加事件触发记录到GameObject的事件触发组件
		trigger.triggers.Add(entry);
	     }
	    
   
	   public void OnScriptControll(BaseEventData arg0)
	   {
		         Debug.Log("Test Click");
		   }

	 }


你可能感兴趣的:(UGUI中使用代码动态绑定触发事件)