1. 程式人生 > >UGUI中使用程式碼動態繫結觸發事件

UGUI中使用程式碼動態繫結觸發事件

         前言: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");
		   }

	 }


相關推薦

UGUI使用程式碼動態觸發事件

         前言:UGUI系統中官方提供了一種Button控制元件,Button封裝了官方提供的一套OnClick事件,如果該GameObject還需要支援按下,移入,移出等事件呢?這時候我們就需要新增EventTrigger元件。如果我們要給一個文字或是一張圖片,新

Unity3D程式碼動態按鈕事件

在場景載入時,即可繫結所有的事件處理函式,可以繫結onClick的監聽,亦可以繫結其他事件,稍作修改,還可使用於其他GameObject,不一定是Button.public class ScenePl

Unity使用uGUI動態按鈕事件

適用場景 像這樣的彈窗在遊戲中經常出現,這個彈窗就是一個prefab,但是當不同的場景觸發這個彈窗時,彈窗上的“確定”按鈕觸發的事件是不同的。 因此需要為彈窗按鈕動態繫結事件。 STEP1 在彈窗入口處繫結事件 public void OnXXXBtnClic

v-for通過動態class來實現觸發效果。

vue動態繫結class練習。 在v-for中: :class=“{ ‘類名1’:條件表示式,‘類名2’:條件表示式… }” <template> <div class="app-*"> <ul> <li

reactbutton上react事件觸發原生body上事件

情景再現需求:在Web頁面中新增一個使用移動裝置掃描二維碼的功能,在點選按鈕時顯示二維碼(在點選按鈕二維碼消失),點選非二維碼區域時將其隱藏起來。出現問題:點選按鈕二維碼顯示之後,在點選按鈕,二維碼一直顯示,不會消失分析原因:React合成事件系統的委託機制,依賴事件的冒泡機

td通過buttonclick事件實現跳轉,以及獲取同一table另一td的值

1、通過button繫結事件跳轉到同一頁面的其他div 例: js頁面 <table id = "tableid"> <tr> <td id = "rcode">"123456"</td> <td><butto

java動態

上程式碼: class A { int i = 1; A(){ } A(int x) { i=x; } public void show() { System.out.println("A::show "+i); } } class B extend

easyuidatagrid動態json載入列的解決方案

在做專案中有這樣一個問題:在前臺輸入sql語句,傳入後臺後獲得資料,將資料繫結在datagrid上顯示。 這個問題困擾我很久,因為如果是傳入sql語句的話,很難確定是哪個表,也不好確定到底有多少列,所以無法使用實體類來獲得資料,解析sql語句的話……..太

jquery input動態onchange事件

<input type=text>繫結onchange事件的注意事項: $('input[name=myInput]').change(function(){...}); However, this event will only fire when t

jquery取消和hover事件的正確方式

在網頁設計中,我們經常使用jquery去響應滑鼠的hover事件,和mouseover和mouseout事件有相同的效果,但是這其中其中如何使用bind去繫結hover方法呢?如何用unbind取消繫結的事件呢? 一、如何繫結hover事件 先看以下程式碼,假設我們

ASP.NETdropdownlist 動態資料的二種方法

DataSet ds=new DataSet();SqlDataAdapter command=new SqlDataAdapter("",conn);...conn.Open();    //開啟資料庫連線command.SelectCommand.CommandText="Select a,b FROM 

uGUI使用程式碼動態新增Button.OnClick()事件(Unity3D開發之十二)

猴子原創,歡迎轉載。轉載請註明: 轉載自Cocos2Der-CSDN,謝謝!uGUI出來這麼久了,也一直沒好好用用,主要是公司專案不用U3D。昨晚用了下Button,還是比較爽的。主要說下用程式碼新增button.OnClick()事件的方法(使用屬性面板新增的方法就不說了)

DevExPress控制元件ComboBoxEdit動態資料

List<string> strList = new List<string>(); //strList.Add()獲取資料後

HTML關於動態建立的標籤無法js事件的解決方法

小夥伴們在前端頁面的時候,是不是會經常遇到用JavaScript動態創建出來的Button按鈕或其他標籤無法使用點選事件的問題。如下程式碼,使用jquery在body中動態建立一個class為demo的Button按鈕,當點選這個按鈕時無法觸發點選事件。 <script> $(fun

9.42jquery動態新增元素無法觸發事件的解決方案

jquery動態新增元素無法觸發繫結的事件的解決方案。   ╭(●`∀´●)╯二狗最近在工作中遇到一個問題,即當用jquery動態新增元素後,發現給動態新增的元素卻無法觸發事件(╯#-_-)╯╧═╧ ( ╯#-_-)╯┴—┴。後來在網上查閱了一些資料,發現原來要這樣處理๑乛◡乛๑: 先上我出錯

element-uiselect元件值改變,觸發change事件

1.安裝vuecli腳手架 2.終端輸入 cnpm i element-ui -S 安裝element-ui 3.按需引入select元件 在main.js中寫入如下程式碼 /* 匯入第三方庫開始 */ import 'element-ui/

jquery動態新增元素無法觸發事件的解決方案。

  最近遇到一個問題,即當用jquery動態新增元素後,發現給動態新增的元素卻無法觸發事件。後來在網上查閱了一些資料,發現原來要這樣處理:   先上我出錯的程式碼:    <!DOCTY

Delphi 程式碼建立控制元件與事件動態

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TF

C++動態型別與動態、虛擬函式、執行時多型的實現【轉】

(轉自:https://blog.csdn.net/iicy266/article/details/11906509) 動態型別與靜態型別 靜態型別          是指不需要考慮表示式的執行期語

Vue動態img的src屬性

問題:不同的status值,載入不同的圖片,如下程式碼雖然動態綁定了src,但是並不能成功載入圖片 <div> <img :src="imgUrl"/> <p>{{info}}</p> </div> computed: